Hie*_*yen 28 c++ java-native-interface android
我是C++和JNI的新手,我试图通过使用JNI找到一种正确的方法将java中的byte []转换为C++中的unsigned char*,反之亦然!(我正在研究android)在google和SO中寻找解决方案之后,我还没有找到一个很好的细节方法将java中的byte []转换为C++.请帮助我,并提供相反的解决方案(C++中的unsigned char*到java中的byte []).非常感谢
JAVA:
private static native void nativeReceiveDataFromServer(byte[] value, int length);
Run Code Online (Sandbox Code Playgroud)
JNI:
... (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length)
{
???
}
Run Code Online (Sandbox Code Playgroud)
PS:我修改了我的问题,因为我的问题是一个真正的问题:(
Zha*_*arf 66
您可以使用它将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;
}
Run Code Online (Sandbox Code Playgroud)
转换相反的方式......
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38855 次 |
| 最近记录: |