参考 A correct way to convert byte[] in java to unsigned char* in C++, and vice versa?
unsigned char 转 jbyteArray
jbyteArray as_byte_array(JNIEnv *env, unsigned char* buf, int len) {
jbyteArray array = env->NewByteArray (len);
env->SetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
return array;
}
jbyteArray 转 unsigned char
unsigned char* as_unsigned_char_array(JNIEnv *env, 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;
}
ps: 这两个函数要 include<jni.h>