我的字节数组有前8个值, 0 0 12 12 0 0 127 224
然而,当我在转换后阅读bitarray时, 它有,
<00> 0000,0000 0000,0000 0011,0000 0011,0000 0000,0000 0000,0000 1111,1110 0000,0111我不知道为什么bitarray有这些价值......
有人知道为什么会这样吗?
用于转换的代码是;
byte[] bytes = System.IO.File.ReadAllBytes(args[0]);
BitArray bits = new BitArray(bytes);
答案 0 :(得分:0)
为了理解,需要从右到左读取所有位。
0000,0000 0000,0000 0011,0000 - &gt; 00001100 = 12 0011,0000 0000,0000 0000,0000 1111,1110 - &gt; 01111111 = 127 0000,0111
这就是BitArray的工作方式。
http://msdn.microsoft.com/en-us/library/x1xda43a.aspx
The first byte in the array represents bits 0 through 7,
the second byte represents bits 8 through 15, and so on.
The Least Significant Bit of each byte represents the lowest index value:
"bytes [0] & 1" represents bit 0,
"bytes [0] & 2" represents bit 1,
"bytes [0] & 4" represents bit 2,
and so on.
因此,数组中第一个字节的最低有效位是位数组中的第0位,而数组中第一个字节的第二个最低有效位是位数组中的第1位。
我不知道为什么他们这样做。
答案 1 :(得分:0)
由于某种原因,比特流被反转(作为比特的字符串表示)。如果你向后看它就可以了:
"1110 0000"
,您将其作为"0000 0111"
"0111 1111"
,您将其设为"0111 1111"