Java byte[]字节数组转换为String字符串的注意事项
一、toString()
开始我想当然的使用toString()方法进行转换,结果如下:
[B@1b67f74
乍一看就是“乱码”。其实这是hashcode编码,JDK源码如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
二、new String()
String target = new String(byte[] 字节数组对象)
JDK源码:
public String(byte bytes[]) {
this(bytes, 0, bytes.length);
}
public String(byte bytes[], int offset, int length) {
checkBounds(bytes, offset, length);
char[] v = StringCoding.decode(bytes, offset, length);
this.offset = 0;
this.count = v.length;
this.value = v;
}
综上:
对于byte[]字节数组采用toString()方法是行不通的。
正确的方法是使用byte[]数组做参数,新建一个String对象。