问答详情
源自:1-1 文件的编码

为什么要用0xff呢

http://img1.mukewang.com/59b1fcb90001ab8406370165.jpg

代码中,为什么要用b&0xff去掉前面的24个0呢?b是byte类型,本身就只有8位啊


提问者:16k闪存大脑3954634 2017-09-08 10:14

个回答

  • 慕村3124171
    2020-07-27 17:41:26

    我也没明白,感觉他们的回答没有理解你的意思,是说b是byte类型的什么时候转换成int类型的了,既然已经是byte类型只有8位那为什么要进行去掉前面24位的操作呢

  • mmzpr5554321
    2019-02-20 08:58:47

    正如你所说,byte只有8位,然后int有32位,所以byte转换为int,int的前面24位是无意义的(就是跟转换过来的值无关),所以0xff=0000 0000 0000 0000 0000 0000 1111 1111 & b可以保留后8位的数值,前面24位不管是0还是1都会为0不显示。

  • 倩与倩寻
    2018-07-31 15:58:32

    因为Integer.toHexString()方法,此方法返回的字符串表示的无符号整数参数所表示的值以十六进制(基数为16)。谢谢

  • Rexk
    2018-05-04 14:35:58

    将byte转换为int 高24位会补1 0xff的二进制表示是11111111 高二十四位补0 所以0&1为0 这样就去掉了int的高24位的字节

     


  • Simenzz
    2017-12-22 19:23:55

    你试试不加。就有可能变成:ffffffc4

    正如你所说,byte只有8位,我们也只需要用到8位

    加上0xff就可以把后面2位(即8位)留下c4,前面补0


  • 慕用0992347
    2017-09-08 11:09:10

    为了只截取后面8位。