使用byte数组时给定指定的长度 但是该属性的数据长度不是固定的 可能小于等于该长度
当数据长度小于数组给定的长度时 例如:
//指定长度100
private byte[] bytes = new byte[100];
//此处省略获取数据 byte[]中的数据实际长度为30 剩余的70将会自动填充0
//直接转为String
String str = new String(bytes);
//str中前30位为正常字符 后70位为填充 直接页面展示会乱码
System.out.print(str);
//通过下面的方法去掉自动填充的0
String str1 = StringUtils.byteToStr(bytes);
System.out.print(str1); //正确数据 只有实际的30位 没有填充的乱码
方法:
/**
* 去掉byte[]中填充的0 转为String
* @param buffer
* @return
*/
public static String byteToStr(byte[] buffer) {
try {
int length = 0;
for (int i = 0; i < buffer.length; ++i) {
if (buffer[i] == 0) {
length = i;
break;
}
}
return new String(buffer, 0, length, "UTF-8");
} catch (Exception e) {
return "";
}
}