如何将jbyteArray转换为结构?

时间:2011-04-22 15:28:57

标签: java c casting java-native-interface

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

jint Java_com_my_example_Class_getResult(jbyteArray ary, JNIEnv* env, jobject thiz);

现在,一旦我收到'ary'作为jbyteArray,我想将它转换为一个结构,就像这样:

struct st {
   int first;
   int second;
};

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

2 个答案:

答案 0 :(得分:3)

不,你不能将jbyteArray投射到任何东西上!您必须使用GetByteArrayElements()来获取实际的jbyte*指针; 然后你可以施放指针。完成后不要忘记ReleaseByteArrayElements。

答案 1 :(得分:3)

调用GetByteArrayElements来获取指向字节的指针,并将结果表示为结构。然后不要忘记进行相应的释放呼叫。