我有一个JNI C函数,它有一个jbyteArray输入参数。这是一个128字节的数组,我希望与#define字符串进行比较。我如何实现这一目标?在JNI中比较jbytearray和字符串
我试图memcpy jbyteArray无符号字符数据[128],然后做一个memcmp()的数据和#define,但memcpy坠毁我的应用程序。
谢谢。
我有一个JNI C函数,它有一个jbyteArray输入参数。这是一个128字节的数组,我希望与#define字符串进行比较。我如何实现这一目标?在JNI中比较jbytearray和字符串
我试图memcpy jbyteArray无符号字符数据[128],然后做一个memcmp()的数据和#define,但memcpy坠毁我的应用程序。
谢谢。
我结束了复制使用GetByteArrayRegion代替jbytearray。
您可以使用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);
}
谢谢。我最终使用GetByteArrayRegion来代替复制jbytearray。这工作。 – user1118764 2015-03-19 04:32:08