2

ビットストリームを解析しようとしていますが、エンディアンを理解するのに苦労しています。私はバイト バッファを持っており、1 ビットから 8 ビットまでのさまざまな長さのビットフィールドを読み取ることができる必要があります。

私の問題は、バイトのエンディアンに関係しています。デバッガーでステップ実行すると、下位 4 ビットがバイトの上位部分にあるように見えます。つまり、最初の 2 ビットが 10 であると予想しているのですが (10 である必要があります)、デバッガーで確認すると、ビットストリームの最初のバイトは 0xA3 または 1010 0011 です。つまり、ビットが「正しい」順序であると仮定すると、最初の 2 ビットは実際には 11 (右から左へ読む) です。

ただし、ビットの順序が正しくなく、0x3A または 0011 1010 である必要がある場合、予想される最初の 2 ビットとして 10 があるように思われます。

ビット順の問題ではなく、MSb から LSb/LSb から MSb ではなく、ニブル順の問題であるように見えるため、これは私を混乱させます。これはどのように起こりますか?それがファイルから出てきた方法のようです。これは無効なビットストリームである可能性がありますが、16 進エディタでファイルを読み取るときに、ニブルが「間違った」順序で表示されるのを見たことがあります。

私はちょうど混乱していて、何が起こっているのかを理解するのに助けが欲しい. 私はこのレベルで物事を扱うことはあまりありません。

4

1 に答える 1