0

我的字节数组有这些前 8 个值,0 0 12 12 0 0 127 224

但是,当我在转换后读取位数组时,它有,

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);
4

2 回答 2

0

所有位都需要从右到左读取才能有意义。

0000,0000 0000,0000 0011,0000 --> 00001100 = 12 0011,0000 0000,0000 0000,0000 1111,1110 --> 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。

我不知道他们为什么那样做。

于 2012-08-22T08:43:50.100 回答
0

由于某种原因,位流被反转(作为位的字符串表示)。如果你倒着读,没关系:

  • 224是"1110 0000",你有它作为"0000 0111"
  • 127是"0111 1111",你有它作为"0111 1111"
于 2012-08-22T08:45:13.517 回答