【发布时间】:2011-09-22 01:12:43
【问题描述】:
可能重复:
Conversion of byte[] into a String and then back to a byte[]
我有以下一段代码,我试图通过测试,但似乎无法理解 Java 世界中各种形式的编码。
import java.util.Arrays;
class Test {
static final byte[] A = { (byte)0x11, (byte)0x22, (byte)0x33, (byte)0x44, (byte)0x55, (byte)0x66, (byte)0x77, (byte)0x88, (byte)0x99, (byte)0x00, (byte)0xAA };
public static void main(String[] args) {
String s = new String(A);
byte[] b = s.getBytes();
if (Arrays.equals(A,b)) {
System.out.println("TEST PASSED!");
}
else {
System.out.println("TEST FAILED!");
}
}
}
我想我的问题是:将任意字节的字节数组转换为 Java 字符串的正确方法是什么,然后再将相同的 Java 字符串转换为另一个字节数组,该数组的长度和内容与原始字节数组?
【问题讨论】:
-
我测试通过了,你确定你运行的是最新的代码吗?
-
你的原始字节数组的编码是什么?
-
@Mike K:ideone.com/To8IK
-
@MarkElliot:这是一些二进制数据,A 没有底层的“编码”。
-
@Xander Tulip 如果有字符串,总是有编码。如果您单独打印出
for(byte iB : b) System.out.println(Integer.toHexString(iB ));的字节,您会看到问题从0x88 开始。