遍历C#中字节的所有位

我正在开发C#应用程序。我有一个字节变量,我想遍历它的所有位。

byte var = 3;
System.Collections.BitArray bits = new System.Collections.BitArray(var);
Console.WriteLine("Length of collection : " + bits.Length);
for (int i = 0; i < bits.Length; i++)
{
    Console.WriteLine(bits[i]);
}

这段代码为我提供了以下输出:

Length of collection : 3
False
False
False

但是由于3的二进制表示形式是00000011,所以我期望以下输出

False
False
False
False
False
False
True
True

我在做什么错?我如何获得所需的输出

liunina123 回答:遍历C#中字节的所有位

您正在调用BitArray(int length)构造函数:

  

初始化BitArray类的新实例,该实例可以保存指定数量的位值,这些位值最初设置为false。

因此,您要创建一个长度为3的BitArray,而不是包含整数3的位的BitArray

您需要BitArray(byte[] bytes)构造函数:

  

初始化BitArray类的新实例,该实例包含从指定的字节数组复制的位值。

byte var = 3;
BitArray bits = new BitArray(new byte[] { var });
Console.WriteLine("Length of collection : " + bits.Length);
for (int i = 0; i < bits.Length; i++)
{
    Console.WriteLine(bits[i]);
}

输出:

Length of collection : 8
True
True
False
False
False
False
False
False
本文链接:https://www.f2er.com/3050429.html

大家都在问