組み込みシステムから生成されたコアファイルを分析するために、LinuxでCのプログラムを書いています。コアファイルはリトルエンディアン(ARM)またはビッグエンディアン(MIPS)であり、それらを分析するプログラムはリトルエンディアンホスト(x86)またはビッグエンディアン(PowerPC)で実行されている可能性があります。
ヘッダーを見ると、コアがLEかBEかがわかります。プログラムが実行されているホストがリトルエンディアンかビッグエンディアンかを知る必要はなく、 APIを使用して処理したいと思います。これ以上の選択肢がない場合は、#ifdef__BIG_ENDIAN__に依存し始めると思います。
Linuxカーネルには、ネイティブバイト順序からリトルエンディアンなどに変換するcpu_to_le32 et alがあります。ユーザースペースには、ネイティブからビッグエンディアンに変換するhtonl et alがありますが、ネイティブからリトルエンディアンに相当するものはありません。
誰かがユーザースペースに適したAPIを提案できますか?
編集:明確にするために、CPUがビッグエンディアンかリトルエンディアンかをすでに認識しており、それに応じてバイを交換するAPIを探しています。このためにコードに#ifdefsを散らかす必要はありません。バイトを交換するためのコードスニペットを探しているだけではありません。それらに感謝します、しかしそれはポイントではありませんでした。