bfHex.append("0");
//转为为16进制字符串
bfHex.append(Integer.toString((int) bin[i] & 0xff..., 16));
}
return bfHex.toString();
}
为什么byte转int需要与0XFF
0XFF = {[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0...],[0,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1]};
一个 int 类型的数字 &0XFF ,就是将这个数字的高24位全部置为0;
byte转化为一个int类型直接强转不行么...所以我们进行 0XFF 的时候抹掉了高24位,确保了数据二进制补码的完整新(同时也解释了转化的16进制如果小于10需要在前面加0的原因)。
?...byte&0xff.png
我们从 BufferedInputStream.java 源代码中都可以找到获取下一个字节的方法 int read() ,最后的得到的字节也是需要 &0xff 转化为 int