私はC++とJNIの初心者です。JNIを使用して、C++でJavaをunsigned char *に、またはその逆に変換する正しい方法を見つけようとしています。 Androidでの作業)GoogleとSOでソリューションを探した後、byte []をJavaからC++に変換する詳細な方法は見つかりませんでした。手伝って解決策を提供してください。その逆(C++のunsigned char *からJavaのbyte []へ)。
Java:
private static native void nativeReceiveDataFromServer(byte[] value, int length);
JNI:
... (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length)
{
???
}
PS:私の問題に対する本当の質問になるように質問を修正しました:(
これを使用して、unsigned char
配列をjbyteArray
に変換できます。
jbyteArray as_byte_array(unsigned char* buf, int len) {
jbyteArray array = env->NewByteArray (len);
env->SetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
return array;
}
逆方向に変換するには...
unsigned char* as_unsigned_char_array(jbyteArray array) {
int len = env->GetArrayLength (array);
unsigned char* buf = new unsigned char[len];
env->GetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
return buf;
}