字节 byte

  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