2011-01-21 11 views
1

これは健全性チェックほど問題ではありません!ビッグエンディアンのビットマスク

あなたはビッグエンディアンでビットマスクとしてのJavaに4つのバイトを読み取るために必要な、それらのバイトがあった場合:

は0x00、0x01の、0xB6、0×02。 int型にその作り

は次のようになります。112130

バイナリは次のようになります。00000000000000011010011000000010

一連のバイトのエンディアンがビット位置に影響を与えない、それでしょうか?

おかげ

トニー

答えて

1

エンディアンは、バイトの順序は反映されますが、それらのバイト内のビットの順序は反映されません。

私が(2バイトの)単語0x9001を表現したいとしましょう。 バイナリでこれを入力すると、1001000000000001になります。

ビッグエンディアンマシンでバイトをダンプすると、10010000 00000001と表示されます。

リトルエンディアンマシンで(下位アドレスから上位に)バイトをダンプすると、00000001 10010000と表示されます。

+0

その情報をお寄せいただきありがとうございます。私はそれが私が間違っているビットマスクではないと感じている、それは私が最初に読んでいるデータよりも可能性が高いです。 Ta。 – Tony

0

あなたが注意を払わなければならない唯一のことは、あなたが「ジャワに4つのバイトを読み、」どのように正確である - エンディアン事項それはだとあなたは混乱それを(DataInputStreamはビッグエンディアンを想定)することができます。読み込んだ値がint 112130になったら、設定されています。

1

一般的に、読んでいるものがバイト全体を与えている場合は、それらのバイトを構成するビットの順序について心配する必要はありません。重要なバイトの順序であり、あなたが正しく考えているように。

個々のビットの「エンディアン」について心配する必要がある時間は、実際にはバイト全体ではなくビットのストリームを読み書きする場所です(ビット単位で動作する圧縮アルゴリズムを記述している場合など)レベルでは、ビットを書き込む順番を決める必要があります)。

関連する問題