我正在尝试使用以下代码段将字节数组转换为字符串。但由于某些原因,当我将byte []转换为字符串时,它会更改文件中的某些内容
代码
public String convertToString(byte[] byteArr)
{
public static final int BYTE_MASK = 0xFF;
StringBuilder strBldr = new StringBuilder();
for(int i = 0; i < byteArr.length; i++ ) {
strBldr.append((char) (byteArr[i] & BYTE_MASK));
}
return strBldr.toString();
}
我添加了两个文件的数据,称为预期文件和生成的文件
预期文件:
00 39 00 00 46 91 00 00 00 17 16 02 16 16 39 31
0b 00 3a 00 78 09 60 40 26 64 50 41 50 20 48 49
47 20 52 4d 20 20 04 00 80 4b 02 00 a0 ea 01 00
64 00 ec 05 00 00 00 00 00
生成的文件:
00 39 00 00 46 3f 00 00 00 17 16 02 16 16 39 31
0b 00 3a 00 78 09 60 40 26 64 50 41 50 20 48 49
47 20 52 4d 20 20 04 00 3f 4b 02 00 a0 ea 01 00
64 00 ec 05 00 00 00 00 00
如果你看到两个文件,那么预期的文件数据应该是“91”(第一行,第六个元素),并且它在生成的文件中是3f。
知道如何获得正确的输出?
答案 0 :(得分:0)
试试这个:
String example = "This is an example";
byte[] bytes = example.getBytes();
System.out.println("Text : " + example);
String s = new String(bytes);
System.out.println("String : " + s);
输出:
文字:[B @ 187aeca
字符串:这是一个例子