2011-04-22 111 views
1

我使用Java和C代码之间的JNI从Java字节[]数组传递给C.在C中,所述参数是jbyteArray,像如下:如何将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

参见http://mindprod.com/jgloss/jni.html;有很多例子。 – 2011-04-22 15:35:33

回答

3

调用GetByteArrayElements来得到一个指向字节的指针,并将其指向你的结构体。然后不要忘记进行相应的发布呼叫。

3

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