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

b已经是8位byte类型,为什么要用0xff来去掉前面的24位呢?

59b1fce8000157f612800720.jpg

哪句话是将b(byte类型)转换成int类型的. Integer.toHexString(b&0xff)  中, 括号里的b难道不是优先运算吗,这时候应该还是byte类型的吧,所有何来的必要将前面(按我的理解并不存在的)的24位去除呢,求大神指点,谢谢

正在回答

2 回答

个人理解在for循环的时候把byte元素传到Integer.toHexString(b&0xff)的时候byte会自动转型成int类型,由于int类型是32位然后& 0xff 就是把前面24个0去掉只要低8位,最后打印出来的就是只保留低8位的形式

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

这是byte转化integer时出现的问题(因为用的是integer的方法),因为byte在java中是有正负的整数,所以转为integer是也是相应的整数,integer存储大小为4个字节,而byte为一个字节,存在相应扩展,负数是补码存储,所以是前面添1,正数是原码存储所以添0,最后转化为16进制数,前面的0省略,而1不能省略,所以通过&0xff取后八位有效位

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

举报

0/150
提交
取消

b已经是8位byte类型,为什么要用0xff来去掉前面的24位呢?

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