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,并且等等。