现在做一个android案子,需要使用jni调用c++代码。在C++代码中,要把一个byte*数据转换成jstring类型,再传递给java...转换的时候 我使用了下面的方法:
byte* plema;
jstring str;
str = (env)->NewStringUTF((char*)plema);  开始的一些数据都可以转,现在遇到了一个问题:有一个数据ASCII码是:97 2 -94 114  我把打用LOG打出来是:a¢r
这个怎么也转换不过来!是否还有其他的转换方法....各位老大,帮忙看看啊!先谢谢啦....

解决方案 »

  1.   

    里面存储的数据是正确的,打印时强制换下(byte)(str.charAt(0)).
      

  2.   

    楼上的这位大哥,先谢了哈!我现在是需要把这个数据转换成字符串,jstring类型,给返回,在java里面接收啊...
      

  3.   

    你ascii码中竟然有负数,说明压根用的就不是ascii码的字符串。不是ascii码字符串你那个函数就无效了。既然有负数,估计是中文字符串,可能是utf8的或其他的。
    先转换成unicode吧,然后用这个函数:
    static jstring NewString(JNIEnv* env, const jchar* unicodeChars, jsize len)不要这个
    static jstring NewStringUTF(JNIEnv* env, const char* bytes)