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 版权协议,转载请附上原文出处链接和本声明。
