JNI使用(三)——-char*(byte*)和jbyteArray(byte[])x相互转换

  • Post author:
  • Post category:其他


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