将 java.lang.Byte[] 转换为 Java 中的字符串

Convert java.lang.Byte[] to string in Java

我正在从 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[]

你需要return

public native byte[] getNamBytes();

但要将其转换为字符串,您需要使用 new String 例如

public String String getName() {
    return new String(getNameBytes(), "UTF-8");
}