我使用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相关方法来执行此操作?
答案 0 :(得分:3)
不,你不能将jbyteArray
投射到任何东西上!您必须使用GetByteArrayElements()
来获取实际的jbyte*
指针; 然后你可以施放指针。完成后不要忘记ReleaseByteArrayElements。
答案 1 :(得分:3)
调用GetByteArrayElements
来获取指向字节的指针,并将结果表示为结构。然后不要忘记进行相应的释放呼叫。