11

バックグラウンド

バイナリ ファイル形式を設計するときは、通常、ネットワーク バイト順で整数を書き込むことをお勧めします。そのために、 のようなマクロがありますhtonhl()。ただし、WAV などの形式の場合、実際にはリトル エンディアン形式が使用されます。

質問

コードを実行する CPU がビッグ エンディアンかリトル エンディアン アーキテクチャかに関係なく、移植可能なリトル エンディアン値をどのように記述しますか? (アイデア: 標準のマクロntohl()htonl()「逆に」使用することはできますか? または、コードがリトルエンディアンまたはビッグ エンディアンの CPU で実行されているかどうかをテストし、適切なコード パスを選択する必要がありますか?)

したがって、問題は実際にはファイル形式に関するものではなく、ファイル形式は単なる例です。(異端の) ネットワーク プロトコルなど、リトル エンディアンが必要な「通信中」のシリアライゼーションであれば、どのようなものでもかまいません。

4

3 に答える 3