Я полагаю, вы бы использовали 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 .