16k闪存大脑3954634
2017-09-08 10:14
代码中,为什么要用b&0xff去掉前面的24个0呢?b是byte类型,本身就只有8位啊
我也没明白,感觉他们的回答没有理解你的意思,是说b是byte类型的什么时候转换成int类型的了,既然已经是byte类型只有8位那为什么要进行去掉前面24位的操作呢
正如你所说,byte只有8位,然后int有32位,所以byte转换为int,int的前面24位是无意义的(就是跟转换过来的值无关),所以0xff=0000 0000 0000 0000 0000 0000 1111 1111 & b可以保留后8位的数值,前面24位不管是0还是1都会为0不显示。
因为Integer.toHexString()方法,此方法返回的字符串表示的无符号整数参数所表示的值以十六进制(基数为16)。谢谢
将byte转换为int 高24位会补1 0xff的二进制表示是11111111 高二十四位补0 所以0&1为0 这样就去掉了int的高24位的字节
你试试不加。就有可能变成:ffffffc4
正如你所说,byte只有8位,我们也只需要用到8位
加上0xff就可以把后面2位(即8位)留下c4,前面补0
为了只截取后面8位。
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题