将 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");
}
我正在从 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");
}