我有一个JNI C函数,它有一个jbyteArray输入参数。这是一个大小为128的字节数组,我希望与#define字符串进行比较。我如何实现这一目标?
我试图将jbyteArray memcpy到unsigned char数据[128],然后执行memcmp()数据和#define,但是memcpy崩溃了我的应用程序。
感谢。
答案 0 :(得分: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);
}
答案 1 :(得分:0)
我最后使用GetByteArrayRegion复制了jbytearray。