java将字节[]转换为字符串
我有一个byte[]类型的bytearray,长度为17字节,我想将其转换为字符串,并希望将此字符串用于另一个比较,但我得到的输出不是要验证的格式,我使用以下方法进行转换。我想输出为易于验证的字符串,并给出相同的字符串进行比较
byte[] byteArray = new byte[] {0,127,-1,-2,-54,123,12,110,89,0,0,0,0,0,0,0,0};
String value = new String(byteArray);
System.out.println(value);
输出:���{nY
# 1 楼答案
它实际上是编码文本吗?如果是,请指定编码
然而,你得到的数据看起来不像是文本。在我看来,它就像是任意的二进制数据。如果它不是真正的文本,我建议根据需要将其转换为十六进制或base64。有一个很好的public domain base64 encoder你可以用
和解码:
# 2 楼答案
我不能百分之百肯定你说的对不对。这是你想要的吗
# 3 楼答案
也许您应该指定一个字符集:
# 4 楼答案
它是什么编码?您应该明确定义它:
否则,结果是不可预测的(从^{} 构造函数JavaDoc):
顺便说一句,我刚刚用UTF-8、UTF-16和UTF-32试过——都会产生虚假的结果。一长串的
0
让我相信这实际上不是一个文本。你从哪里得到这些数据更新:我已使用机器上可用的所有字符集进行了尝试:
而且没有编码产生任何接近人类可读文本的东西。。。您的输入不是文本
# 5 楼答案
使用方法如下:
您的输出将是