c++ 中的char*转java中的byte[],代码如下:
char *result = addr->getReadData();//字符串
int length =addr->getAvailableSize();//字符串长度
jbyteArray data =env->NewByteArray(length);
env->SetByteArrayRegion(data,0,length, (jbyte*)result);
env->ReleaseByteArrayElements( data,env->GetByteArrayElements(data,JNI_FALSE), 0);
return data;
java中的jbyteArray转为byte*(char*):
char *ptr=NULL;
jsize encoded_length = env->GetArrayLength(encoded);
jbyte* bytePtr = env->GetByteArrayElements(byteArray, JNI_FALSE);
if(encoded_length > 0) {
charPtr = (char*)malloc(arrayLength+1); //"\0"
memcpy(charPtr, bytePtr, arrayLength);
charPtr[arrayLength]=0;
}
env->ReleaseByteArrayElements(byteArray, bytePtr,0);
或者
jsize encoded_length = env->GetArrayLength(encoded);
jbyte *buffer = new jbyt[encoded_length];
env->GetByteArrayRegion(encoded, 0, encoded_length, buffer);
版权声明:本文为wang371372原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。