Java对象中的byte数组参数转换为C可用的char数组
1、获取jclass引用和对象jobject引用,
2、根据参数名称获取jfieldID引用,
3、根据ID获取数组jbyteArray的引用
4、声明一个C 数组
5、将Java数组数据复制给C数组。
id= (*env)->GetFieldID(env, objectClass, filedName, "[B");
jbyteArray dataArray=(jbyteArray)((*env)-> GetObjectField(env,object,id));
unsigned char* byteData[数据长度];
(*env)->GetByteArrayRegion(env,dataArray,0,数据长度,byteData);
C的char指针类型数据转换为jbyteArray
1、根据指针数据的长度生成创建一个jbyteArray数组
2、进行赋值复制
3、使用数据,可以回调到Java中或者其他
4、删除本地引用,这个是局部引用,每次使用完之后都必须把类似的局部引用删除,
char *pBuf ;
jbyteArray data = (*jniEnv)->NewByteArray(jniEnv, length);
(*jniEnv)->SetByteArrayRegion(jniEnv, data, 0, length, pBuf);
(*jniEnv)->DeleteLocalRef(jniEnv, data);