2015-03-19 42 views
0

我有一个JNI C函数,它有一个jbyteArray输入参数。这是一个128字节的数组,我希望与#define字符串进行比较。我如何实现这一目标?在JNI中比较jbytearray和字符串

我试图memcpy jbyteArray无符号字符数据[128],然后做一个memcmp()的数据和#define,但memcpy坠毁我的应用程序。

谢谢。

回答

0

我结束了复制使用GetByteArrayRegion代替jbytearray。

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

谢谢。我最终使用GetByteArrayRegion来代替复制jbytearray。这工作。 – user1118764 2015-03-19 04:32:08