我有这段代码:
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
代替。
答案 0 :(得分:0)
数组中的第一个字节表示第0到第7位,第二个字节 byte表示位8到15,依此类推。 最不重要 每个字节的位代表最低的索引值:“bytes [0]& 1” 表示位0,“bytes [0]& 2”表示位1,“bytes [0]& 4” 代表第2位,依此类推。
答案 1 :(得分:0)
位数组以数组顺序返回位(true或false)。如前所述,字节格式的顺序是:
8765 4321
迭代数组时,按顺序返回位:
1234 5678
进行心理翻译时有点混乱,但排序并不是要重现原始字节。