将java中的byte 转换为C ++中的unsigned char *的正确方法,反之亦然?

我是C ++和JNI的新手,我试图通过使用JNIfind一种正确的方法将java中的byte []转换为C ++中的unsigned char *,反之亦然! (我正在研究android)在google和SO中寻找解决方案之后,我还没有find一个很好的细节方法来将java中的byte []转换为C ++。 请帮助我,并提供相反的解决方案(在C ++中的unsigned char *到java中的byte [])。 非常感谢

  • java中的byte []到C ++中的unsigned char *:

JAVA:

private static native void nativeReceiveDataFromServer(byte[] value, int length); 

JNI:

 ... (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length) { ??? } 

PS:我修改了我的问题,因为我的问题是一个真正的问题:(

您可以使用jbyteArray unsigned char数组转换为jbyteArray

 jbyteArray as_byte_array(unsigned char* buf, int len) { jbyteArray array = env->NewByteArray (len); env->SetByteArrayRegion (array, 0, len, reinterpret_cast(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(buf)); return buf; }