问题是我有一个带有200索引的Byte数组,只想检查MyArray的第四位[75]是零(0)还是一(1)。
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
答案 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;
}