字节 byte

  1 byte = 8 bit

1、获取个 Byte 的各个 Bit 值 

/**

     * 把byte转为字符串的bit

     */  

public static String byteToBit(byte b) {  

return ""  

+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)  

+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)  

+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)  

+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);  

    }  

2、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();

}

3、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

猜你喜欢

转载自blog.csdn.net/weixin_33849942/article/details/91114982