BitArray以相反的顺序创建位

我有这个代码:

ASCIIEncoding ascii = new ASCIIEncoding(); byte[] bytes= ascii.GetBytes("ok"); 

此时,如果我调试并查看byte变量中的内容,我得到:

 111 107 

这是我所期待的。 “o”是111“k”是107

下一个,

 BitArray bits = new BitArray(bytes); 

在这一点上,如果我调试并查看bits变量是什么,我得到:

 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 

(实际数组的’True’为1,’False’为0以上)。

我想知道为什么会发生这种情况以及为什么没有填充位数组

 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 

代替。

位数组以数组顺序返回位(true或false)。 如前所述,字节格式的顺序是:

8765 4321

迭代数组时,按顺序返回位:

1234 5678

在进行心理翻译时,这有点令人困惑,但排序并不是试图重现原始字节。

从文档中

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