如何读取字节数组中的单个BIT?

时间:2009-08-10 18:48:35

标签: c# .net arrays byte bit

问题是我有一个带有200索引的Byte数组,只想检查MyArray的第四位[75]是零(0)还是一(1)。

byte[] MyArray; //with 200 elements

//check the fourth BIT of  MyArray[75]

3 个答案:

答案 0 :(得分:8)

元素75中的第四位?

if((MyArray[75] & 8) > 0) // bit is on
else // bit is off

&运算符允许您使用值作为掩码。

xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8

您可以使用此方法使用相同的技术收集任何位值。

1   = 00000001
2   = 00000010
4   = 00000100
8   = 00001000
16  = 00010000
32  = 00100000
64  = 01000000
128 = 10000000

答案 1 :(得分:4)

类似的东西:

if ( (MyArray[75] & (1 << 3)) != 0)
{
   // it was a 1
}

假设你的意思是右边第4位。

你可能想查看System.Collections.BitArray,以确保你没有重新发明轮子。

答案 2 :(得分:2)

    private bool BitCheck(byte b, int pos)
    {
        return (b & (1 << (pos-1))) > 0;
    }