C# 如何读取字节数组中的单个位?
问题是我有一个包含200个索引的字节数组,只想检查MyArray[75]的第四位是零(0)还是一(1)C# 如何读取字节数组中的单个位?,c#,.net,arrays,byte,bit,C#,.net,Arrays,Byte,Bit,问题是我有一个包含200个索引的字节数组,只想检查MyArray[75]的第四位是零(0)还是一(1) 元素75中的第四位 if((MyArray[75] & 8) > 0) // bit is on else // bit is off &运算符允许您将值用作掩码 xxxxxxxx = ? 00001000 = 8 & ---------------- 0000?000 = 0 | 8 您可以使用此方法使用相同的技术收集任何位值 1 = 00000001 2
元素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
比如:
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
if((MyArray[75]&(1private-bool-BitCheck)(字节b,int-pos)
{
返回(b&(10;
}
实际上8是第三位,第三位是第四位:)(第0位是第一位)好吧,这取决于他所说的“第四位”是什么意思,不是吗?:-)不,8是从最低有效端算起的第四位。或者,如果你想从最高有效端算起的话,第五位。考虑到他在问这个问题,这是一个非常安全的假设,他没有使用第零位。不管怎样,我想他会有足够的信息来找出他的问题的答案或者你说的“第四位”是什么意思第3位还是第4位?你一直在使用“^运算符。我不认为它的意思是你认为它的意思。^是按位排他性的还是没有权力的?我想泰勒的意思是你可能在寻找1。我做了mpbloch的替换并取消了否决票。坦克似乎是新来的,所以我想我可以自由了。
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
private bool BitCheck(byte b, int pos)
{
return (b & (1 << (pos-1))) > 0;
}