打印byte类型的16进制表示的时候
若是使用java的权限自动提升,若byte是正数还好,若是负数,因为是补码存储的而自动提升时高位补位方式类似于算数右移
也就是说会考虑符号位,此时高24位全部为1
例如byte a=0xff;
调用函数Integer.toHexString(a)时
此时转换出来的值为0xffffffff,显然打印出来的结果不对
而采用&0xff的做法,清零高24位
Integer.toHexString(a & 0xff),此时结果就对了
-------------------------------------------------------------------------
偶然看到---分享一下
|