哪句话是将b(byte类型)转换成int类型的. Integer.toHexString(b&0xff) 中, 括号里的b难道不是优先运算吗,这时候应该还是byte类型的吧,所有何来的必要将前面(按我的理解并不存在的)的24位去除呢,求大神指点,谢谢
个人理解在for循环的时候把byte元素传到Integer.toHexString(b&0xff)的时候byte会自动转型成int类型,由于int类型是32位然后& 0xff 就是把前面24个0去掉只要低8位,最后打印出来的就是只保留低8位的形式
这是byte转化integer时出现的问题(因为用的是integer的方法),因为byte在java中是有正负的整数,所以转为integer是也是相应的整数,integer存储大小为4个字节,而byte为一个字节,存在相应扩展,负数是补码存储,所以是前面添1,正数是原码存储所以添0,最后转化为16进制数,前面的0省略,而1不能省略,所以通过&0xff取后八位有效位