Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将jbyteArray强制转换为结构?_Java_C_Casting_Java Native Interface - Fatal编程技术网

Java 如何将jbyteArray强制转换为结构?

Java 如何将jbyteArray强制转换为结构?,java,c,casting,java-native-interface,Java,C,Casting,Java Native Interface,我使用Java和C之间的JNI代码将字节[]数组从Java传递到C。在C中,参数是jbyteArray,如下所示: jint Java_com_my_example_Class_getResult(jbyteArray ary, JNIEnv* env, jobject thiz); 现在,一旦我接收到作为jbyteArray的“ary”,我想将其转换为一个结构,如下所示: struct st { int first; int second; }; 这样做的最佳和最安全的方法是什

我使用Java和C之间的JNI代码将字节[]数组从Java传递到C。在C中,参数是jbyteArray,如下所示:

jint Java_com_my_example_Class_getResult(jbyteArray ary, JNIEnv* env, jobject thiz);
现在,一旦我接收到作为jbyteArray的“ary”,我想将其转换为一个结构,如下所示:

struct st {
   int first;
   int second;
};

这样做的最佳和最安全的方法是什么?我应该尝试将jbyteArray转换为char数组,然后按正常方式强制转换,还是有更安全的JNI相关方法来执行此操作?

否,您不能将
jbyteArray
强制转换为任何内容!必须使用
GetByteArrayElements()
获取实际的
jbyte*
指针;然后您可以投射指针。完成后不要忘记释放ByteArrayElements。

不,您不能将
jbyteArray
强制转换为任何内容!必须使用
GetByteArrayElements()
获取实际的
jbyte*
指针;然后您可以投射指针。完成后不要忘记释放ByteArrayElements。

调用
GetByteArrayElements
获取指向字节的指针,并将其大小写为指向结构的大小写。然后别忘了进行相应的释放调用。

调用
GetByteArrayElements
以获取指向字节的指针,并将其大小写为指向结构的大小写。然后别忘了打相应的释放电话。

请参阅;有很多例子;有很多例子。