问答详情
源自:3-1 RandomAccessFile基本操作

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

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

提问者:Antique 2017-01-05 22:06

个回答

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

    byte b = -13;

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

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

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

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