小编use*_*849的帖子

将JNI Java byte []转换为C++ bytearray,返回0

我在这里遇到了一个非常大的问题.我试图将一个byte []从Java传递给C++,转换后我得到负值.我已经确定了在Java byte []中使用唯一字符的问题,在转换和执行日志之后,值为0或负数.

我已经尝试使用字符串字符的测试字节[],它工作正常.

这是我的代码,如果它有帮助.

Java的

public static native void SendMessage(byte[] message, int size); //size = message.length
Run Code Online (Sandbox Code Playgroud)

C++

static void SendMessage(JNIEnv *env, jclass cls, jbyteArray array, jint array_length)
 {
     jbyte* content_array = (env)->GetByteArrayElements(array,NULL);
     //*env->GetByteArrayRegion(array,0,array_length,content_array); //tried this as well, same results
     LOGD("content:\n"); 
     for (int i=0; i < array_length; i++) 
     {
         LOGD("%d",content_array[i]); 
     } 

     //EDIT
     SendMessage(client, (uint8_t*)content_array, array_length); //<- could the problem be at the point where I convert it to uint8_t?

      (env)->ReleaseByteArrayElements(array,content_array,0); 
  }
Run Code Online (Sandbox Code Playgroud)

产量

content: 48
content: 23
content: 13
content: …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface

5
推荐指数
1
解决办法
6052
查看次数

标签 统计

java ×1

java-native-interface ×1