JNI беззнаковый символ в байтовый массив - PullRequest
2 голосов
/ 06 января 2011

Я работаю с библиотекой C ++, которая хранит байтовые данные изображения в массиве беззнаковых символов.Моя функция jni возвращает jByteArray (который затем преобразуется в BufferedImage на стороне java), но я не уверен, как заполнить jByteArray из массива символов без знака (если это возможно).Может ли кто-нибудь предоставить фрагмент этой последней части, чтобы в основном сделать это:

// size is the size of the unsigned char array
const int size = 100;
unsigned char* buf = new unsigned char[size];
// buf gets passed to another library here to be populated

jbyteArray bArray = env->NewByteArray(size);
// now how do I get the data from buf to bArray?

Спасибо, Джефф

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Вот фрагмент, который должен указать вам правильное направление.

jboolean isCopy;
void *data = env->GetPrimitiveArrayCritical((jarray)bArray, &isCopy);

memcpy(data, buf, bytecount);

// and don't forget the 'release'
0 голосов
/ 06 января 2011

Пользователь jbyte * вместо неподписанного символа *

В JNI Jbyte определяется как подписанный символ. JNI предлагает несколько функций для этой цели: вы можете создать новый jbyteArray и установить указанную область в буфере jbyte *.

Пожалуйста, прочтите документацию.

...