我想使用JNI對字節或char數組進行XOR運算符。我使用字節或字符數組和密鑰,我必須使用加密或解密的本地方法。對於XOR的單行,我不能在eclipse中建立C文件,因爲「void value不會被忽略,因爲它應該是」。 我加了jchar *xor
來解決void錯誤,比我得到一個更多的錯誤「無效使用void表達式」 我無法解決這個問題。這裏是我的c代碼。JNI XOR加密Eclipse構建錯誤
int
Java_packagename_classname_encryption(JNIEnv* env, jobject obj,
jcharArray buffer, jint offset,
jint length, jcharArray _key, jint keylength){
jint temp,i ;
jint _keyByteIndex = 0;
jcharArray xor[length] ;
for(i=0; i<length + offset; ++i){
/*char temp = buffer[i];
temp ^= _key[_keyByteIndex];
buffer[i] = (char) temp;*/
buffer[i] = (jchar) (buffer[i]^_key[_keyByteIndex]);
if (_keyByteIndex + 1 >=keylength){
_keyByteIndex = 0;
}else{
++_keyByteIndex;
}
}
return 0;
}
'jcharArray'不是一個可以直接用'[]'訪問的數組。這是一個'jobject',爲了訪問實際的數組數據,您需要使用適當的[JNI函數](https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/functions。 HTML)。 – Michael
@邁克爾謝謝,但你可以請爲我寫單行代碼,所以我可以理解。我研究jni.h,但不能理解完美的語法。 – parthpatibandha
任何人都知道如何在JNI C中捕獲異常本機代碼我嘗試了簡單的嘗試捕獲,但提供了許多錯誤,如:: - '嘗試'未申報(首次在此函數中使用) \t - 每個未聲明的標識符只報告一次它出現的每個功能 \t in \t - 預期';' '{'token \t - 聲明無效'try' \t - 無法解析代碼'try' \t - Missing';' – parthpatibandha