Ответ 1
Я считаю, что вы использовали бы GetByteArrayElements
и ReleaseByteArrayElements
. Что-то вроде:
boolean isCopy;
jbyte* b = GetByteArrayElements(env, arr, &isCopy);
В этот момент вы должны использовать b
для char*
для доступа к данным в массиве. Обратите внимание, что это может создать копию данных, поэтому вам нужно будет освободить память с помощью ReleaseByteArrayElements
:
ReleaseByteArrayElements(env, arr, b, 0);
Последний параметр - это режим, указывающий, как следует обрабатывать изменения b
. 0
указывает, что значения копируются обратно в arr
. Если вы не хотите копировать данные обратно в arr
, используйте JNI_ABORT
.
Подробнее см. Справочник JNI.