我有一個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