JAVA:序列化对象时字节数组的奇怪字节值



目前我正在开发自己的crc32实现。我快完了!现在我想测试它,并序列化一些对象。这是我的代码:

String test = "Hallo 123 Test";

try {
sysoutBytes(serialize(test));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
public static byte[] serialize(Object obj) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(obj);
return out.toByteArray();
}

但现在我有一个问题,字节非常奇怪。这是我的输出:

-84-19 0 5 116 0 14 72 97 108 111 32 49 50 51 32 84 101 115 116

我只需要它的二进制版本,因为我的crc代码只适用于0和1字节。

谢谢你的帮助!

这些不是奇怪的字节值。这些是正常的字节值,范围在0..255之间,尽管您打印它们的方式显示为-128..127。通过加256,这些负值通常被打印为正值。

0和1是,而不是字节。每个字节由八位组成。你可以把这些字节中的每一个拆开,得到八个比特。您需要先决定是想要最高有效位还是最低有效位。比方说后者。您可以使用x & 1获得低位(x是字节(。然后执行x >>= 1以将x向下移位一位。则最低比特的下一个是CCD_ 5。等等。

最新更新