Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > JNI GetByteArrayElements в char[]


Автор: wertklop 25.6.2013, 12:36
Всем здравствуйте!

из Java-кода через нативный метод в одном из параметров передается byte[] (Java). Соответственно, в С-коде он передается в метод как переменная типа jbyteArray. Задача в том, чтобы элементы этого массива были в моем инициализированном в С-коде массиве типа unsigned char, т.е.:
Код

в метод передается параметр jbyteArray array

unsigned char *element;
element = (unsigned char*)env->GetByteArrayElements(array, NULL);
//в дальнейшем значение по этому указателю записывается в файл


Однако после записи, прочитанное значение из файла не совпадает со значением element. Если element был бы как unsigned char element[100], то значения совпадали бы. Но в таком случае, как правильно скопировать значения из jbyteArray array?

Автор: volatile 25.6.2013, 13:34
Цитата(wertklop @  25.6.2013,  12:36 Найти цитируемый пост)
как правильно скопировать значения из jbyteArray array? 

Сначала узнать размер
size = env->GetArrayLength (array);
потом выделяем память и копируем.

ps: Вы скорей всего не правильно сравниваете.
если не вызываецца ReleaseByteArrayElements перед сравнением,
то память можно не выделять и не копировать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)