[英]JAVA: Weird byte values of byte array when serializing objects
目前我正在研究我自己的 crc32 实现。 我快完成了。 现在我想测试它,我想序列化一些 object:这是我的代码:
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();
}
但现在我遇到了问题,字节很奇怪。 这是我的 output:
-84 -19 0 5 116 0 14 72 97 108 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
向下移动一位。 然后倒数第二位是x & 1
。 等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.