0

私のバイト配列には、これらの最初の 8 つの値、0 0 12 12 0 0 127 224 があります。

ただし、変換後にbitarrayを読み取ると、

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 であり、配列の最初のバイトの最下位から 2 番目のビットはビット配列のビット 1 です。

なぜ彼らがそのようにしたのか、私にはわかりません。

于 2012-08-22T08:43:50.100 に答える
0

何らかの理由で、ビット ストリームが逆になっています (ビットの文字列表現として)。逆に読めばOKです。

  • 224は"1110 0000"、あなたはそれを持っています"0000 0111"
  • 127は"0111 1111"、あなたはそれを持っています"0111 1111"
于 2012-08-22T08:45:13.517 に答える