为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要用0xff呢

http://img1.sycdn.imooc.com//59b1fcb90001ab8406370165.jpg

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


正在回答

6 回答

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

0 回复 有任何疑惑可以回复我~

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

2 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

 


0 回复 有任何疑惑可以回复我~

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

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

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


0 回复 有任何疑惑可以回复我~

为了只截取后面8位。

0 回复 有任何疑惑可以回复我~
#1

16k闪存大脑3954634 提问者

byte不是本身就只有8位吗
2017-09-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么要用0xff呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信