byte2Hex时,按位0xff与困惑
最近帮朋友写一个比特币的程序,其中有一个是将一个字节组成的数组转换成16进制编码,其中一个&0xff令我十分疑惑。
1 2 3 4 5 6 |
private static String bytArrayToHex(byte[] a) { StringBuilder sb = new StringBuilder(); for(byte b: a) sb.append(String.format("%02x", b&0xff)); return sb.toString(); } |
&按位与是保留后7位,高位清零。这个作用是避免符号位扩展。
0xff:0000?0000?1[……]