foreach取buf里面的每一个byte以后,为什么还要&0xff,一个byte不是已经8bit了吗

来源:3-1 RandomAccessFile基本操作

Antique

2017-01-05 22:06

        for(byte b:buf){
            System.out.print(Integer.toHexString(b & 0xff)+" ");
        }

写回答 关注

2回答

  • 邓孤思
    2017-01-05 23:06:46
    已采纳

    byte b = -13;

    System.out.println(Integer.toHexString(b));// fffffff3

    System.out.println(Integer.toHexString(b & 0xff));// f3

    Antiqu...

    这段代码我有敲过, 看了你的第二句话突然明白,toHexString的参数得要是int,所以byte类型自动类型转换成了32bit的int,然后又需要把前面24位去掉了,感谢你

    2017-01-05 23:20:24

    共 1 条回复 >

  • 邓孤思
    2017-01-05 22:41:55

    byte可能是负数(比如中文对应的字节),而toHexString(int b)的参数是int类型,所以可以使用0xff将高位的都清除,只剩地位的8个bit。

    Antiqu... 回复邓孤思

    我才发现在4-2有这个的解释。。。

    2017-01-05 23:30:01

    共 3 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题