1 byte = 8 bit数组
一、获取一个 Byte 的各个 Bit 值 app
/**url
* 把byte转为字符串的bit字符串
*/ get
public static String byteToBit(byte b) { it
return "" class
+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1) 二进制
+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1) 数据
+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1) static
+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);
}
二、byte数组转换成十六进制(bytesToHexString)
public String bytesToHexString(byte[] bArr) {
StringBuffer sb = new StringBuffer(bArr.length);
String sTmp;
for (int i = 0; i < bArr.length; i++) {
sTmp = Integer.toHexString(0xFF & bArr[i]);
if (sTmp.length() < 2)
sb.append(0);
sb.append(sTmp.toUpperCase());
}
return sb.toString();
}
三、byte[i] & 0xFF缘由(byte为何要&上0xff?)
// 保持二进制补码的一致性 由于byte类型字符是8bit的 而int为32bit 会自动补齐高位1 因此与上0xFF以后能够保持高位一致性 当byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff能够将高的24位置为0,低8位保持原样,这样作的目的就是为了保证二进制数据的一致性。
转载于:https://www.jianshu.com/p/113268ea5518