0

私は解決できないように見える問題に遭遇しました。私はファイルのタイプ「ASDF」を持っており、それらのヘッダーでそれらを読み取るために必要な情報を取得できます。問題は、「フィールド」の 1 つが 4 ビットしかないことです。

したがって、次のようになります。

  • ビット 0 から 8 までは、現在のノードのインデックスです (これは既に読みました)。
  • 8から16までは次のノードのインデックスです(これも読んでください)
  • ビット 16 ~ 20 コンテンツの長さ (文字列など)

したがって、私の問題は、バイトリーダーで「長さ」を読み取ろうとすると、4ビットの情報が失われるか、「4ビットオフ」になることです。4 ビットのみを読み取る方法はありますか?

4

1 に答える 1

1

他のバイトを読み取るときにこのバイトを読み取ってから、0x0F のビットマスクを適用する必要があります。

例えば

byte result = (byte)(byteRead & 0x0F);

これにより、結果の下位 4 ビットが保持されます。

必要なビットが上位 4 の場合、シフト演算子を適用できます。

byte result = (byte)((byteRead & 0x0F) >> 5);
于 2012-04-23T12:36:08.733 に答える