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

时间:2016-02-23 12:21:05

标签: java string java-native-interface bytearray

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

1 个答案:

答案 0 :(得分:0)

您需要返回

public native byte[] getNamBytes();

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

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