繁体   English   中英

JAVA:序列化对象时字节数组的字节值异常

[英]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 >>= 1x向下移动一位。 然后倒数第二位是x & 1 等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM