2015-03-19 3 views
0

У меня есть функция JNI C, которая имеет входной параметр jbyteArray. Это байтовый массив размером 128, который я хочу сравнить с строкой #define. Как мне это достичь?Сравнение jbytearray со строкой в ​​JNI

Я попытался выполнить memcpy jbyteArray с данными без знака [128], а затем сделать memcmp() данных и #define, но memcpy разбил мое приложение.

Спасибо.

ответ

0

Я в конечном итоге копирование jbytearray с помощью GetByteArrayRegion вместо этого.

0

Вы можете использовать GetByteArrayElements(), чтобы получить содержимое массива байтов, а затем сравнить с использованием strncmp или memcmp или что-то:

#define COMPARE_STRING "somestring" // can be up to 128 bytes long 

// JNIEnv *pEnv 
// jbyteArray byteArray 

// get the byte array contents: 
jbyte* pBuf = (jbyte*)(*pEnv)->GetByteArrayElements(pEnv, byteArray, 0); 
if(pBuf) 
{ 
    // compare up to a maximum of 128 bytes: 
    int result = strncmp((char*)pBuf, COMPARE_STRING, 128); 
} 
+0

Спасибо. Я закончил копирование jbytearray, используя GetByteArrayRegion. Это сработало. – user1118764

Смежные вопросы