我从c(JNI中的jbyteArray)获取java.lang.Byte []。如何将此jbyteArray转换为java中的字符串。
c函数是
jbyteArray Java_eu_ratikal_helloc_MainActivity_getNameBytes(JNIEnv* env, jobject thiz) {
int n=0;
jstring na ="HelloAndroidString";
char* p = "HelloAndroidString";
while(*p++){
n++;
}
jbyteArray arr = (*env)->NewByteArray(env, n);
(*env)->SetByteArrayRegion(env,arr,0,n, (jbyte*)na);
char* b = (char*)arr;
return arr;
}
java代码是
byte[] bytes = getNameBytes();
获取编译错误,如
不兼容的类型 必填字节[] 找到java.lang.Byte []
答案 0 :(得分:0)
您需要返回
public native byte[] getNamBytes();
但要将其转换为字符串,您需要使用new String
例如
public String String getName() {
return new String(getNameBytes(), "UTF-8");
}