java获取一个byte字节里的某个bit值或连续的几个bit值

在java里,一个byte占8位 ( bit0-bti7 ),那我们怎么去获取其中的某个bit值或连续的几个bit值呢?

获取单个bit值:

//b为传入的字节,i为第几位(范围0-7),如要获取bit0,则i=0
public int getBit(byte b,int i) {
    int bit = (int)((b>>i) & 0x1);
    return bit;
}

获取多个连续的bit值:

//b为传入的字节,start是起始位,length是长度,如要获取bit0-bit4的值,则start为0,length为5
public int getBits(byte b,int start,int length) {
    int bit = (int)((b>>start)&(0xFF>>(8-length)));
    return bit;
}

 

你可能感兴趣的:(java)