2017-01-21 16 views
1

私はクロスプラットフォームのC++ 11アプリケーションでエンディアンを処理しようとしています。ビットはエンディアンで重要ですか?

ビッグエンディアンからリトルエンディアンに64ビットの値を変換して、がよく定義されたの動作にしたいとします。 1つのリソースは、ビッグエンディアンのバージョンをstd::bitsetにロードし、その内容を逆にすることができることを示唆しています。

しかし、それは正しくありませんか?エンディアンは、ビットオーダーではなくバイトオーダーを常に扱うようですが、問題を明示的に解決する明確なリソースを見つけることはできません。

+4

あなたのブックマークから「one resource」を削除します –

+0

なぜ1つの注文を他の注文に変換したいですか?より一般的な使用事例は、_bigエンディアンバイトストリーム_から_native_'uint64_t'に値を_read_することです。 –

+0

@RolandIlligこれは手元にあるユースケースです。ストリーミングや変換は、理論的な質問であった。 – Litty

答えて

5

あなたは絶対に正しいです。

エンディアンが値0x12345678で表される場合、ビッグエンディアンは12 34 56 78であり、リトルエンディアンは78 56 34 12です。ビッグエンディアン表現のビットを反転させても、リトルエンディアン表現は生成されません。バイトを反転するだけです。

関連する問題