BitArray以错误的方式返回位?

hai*_*yyu 13 c# enumeration bitarray

这段代码:

BitArray bits = new BitArray(new byte[] { 7 });
foreach (bool bit in bits)
{
    Console.WriteLine(bit ? 1 : 0);
}
Run Code Online (Sandbox Code Playgroud)

给我以下输出:

11100000
Run Code Online (Sandbox Code Playgroud)

不应该是相反的方式吗?像这样:

00000111
Run Code Online (Sandbox Code Playgroud)

我知道有一点点大端,虽然这些术语只涉及字节的位置.据我所知,它们不会影响比特.

Tad*_*mas 11

BitArray文档说明:

数组中的第一个字节表示位0到7,第二个字节表示位8到15,依此类推.每个字节的最低有效位表示最低索引值:"bytes [0]&1"表示位0,"bytes [0]&2"表示位1,"bytes [0]&4"表示位2,并且等等.

索引位时,约定是从最低端开始,这是以二进制表示法写入时的右侧.但是,在枚举数组时,从索引0开始,因此它们从左到右而不是从右到左打印.这就是它向后看的原因.

例如,单词01011010 00101101(90 45)将索引为:

 0  1  0  1  1  0  1  0  -  0  0  1  0  1  1  0  1
-----------------------    -----------------------
15 14 13 12 11 10  9  8     7  6  5  4  3  2  1  0
Run Code Online (Sandbox Code Playgroud)

你会把它传递给构造函数,new byte[] { 45, 90 }因为你首先传递它最不重要.打印出来时,它将以索引顺序显示为:1011010001011010,这与原始二进制表示法相反.