2015-03-19 69 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