Как привести JbyteArray к структуре? - PullRequest
1 голос
/ 22 апреля 2011

Я использую JNI между кодом Java и C для передачи массива 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 в массив символов и затем привести его как обычно, или для этого есть более безопасный метод, связанный с JNI?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Нет, вы не можете разыграть jbyteArray ни к чему!Вы должны использовать GetByteArrayElements(), чтобы получить фактический указатель jbyte*; затем вы можете навести указатель.Не забудьте ReleaseByteArrayElements, когда закончите.

3 голосов
/ 22 апреля 2011

вызовите GetByteArrayElements, чтобы получить указатель на байт, и укажите его в своей структуре. Тогда не забудьте сделать соответствующий вызов.

...