Android 理解byte数组转16进制字符串
1.转换方式
/*
* 字节数组转16进制字符串
*/
public static String bytes2HexString(byte[] array) {
StringBuilder builder = new StringBuilder();
for (byte b : array) {
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
builder.append(hex);
}
return builder.toString().toUpperCase();
}
2.理解转换代码
b&0xFF : 为什么要&0xFF
我们先理解存储,
一字节 = 8bit byte = 一字节 int = 四字节
so: byte = 8bit int = 32bit
当然,byte可以直接转换成int,但是一旦byte为负数时,这时候转换就出问题了
byte 为 '1'时 存储在内存中0000 0001
byte 为 '-1'时 存储在内存中1111 1111(存储的是补码)
假如直接转换成int型,明显就已经不是原来的那个数据了,b&0xFF 就是只取低八位