• 締切済み

エンディアンを知るには

リトルエンディアンのマシンで作ったバイナリデータをいろいろなマシンで読み込みたいのですが、一部がビッグエンディアンなので変換の必要があります。ただ、ソースを共通にしたいのでエンディアンを知ることができるマクロの値でエンディアンの違いの処理を行いたいのですが、どのようなマクロを使えばいいのでしょうか?

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> エンディアンを知ることができるマクロの値で それは#ifなどで静的に処理したいということでしょうか? だとしたら、処理系に応じて手作業でマクロを定義し直してやるしかありません。 動的に判定するのでかまわないなら、マクロにするより関数にした方がよいと思います。 ところで、リトルエンディアンとビッグエンディアンだけで、PDPエンディアンとかは配慮しなくてもいいんですよね。

moritan2
質問者

お礼

お礼と補足がいれかわってしまいました。 補足です。 コンパイラを特定しないといけませんでした。コンパイラは gcc とお考えください。CPU は Intel系(開発に使うPC)、ARM(DS)、MIPS(PS2、PSP)、PowerPC(WII) です。

moritan2
質問者

補足

ご回答ありがとうございます。 コンパイル時にはCPUが決まっているので、コンパイラはエンディアンを知っているはずであり、 #ifdef BIG_ENDIAN // エンディアンの変換処理 #endif という感じで使えるマクロがあるのではないかと思って質問してみたのですが、、、 PDPはおそらく一生使うことは無いでしょう。というか、現在世の中に存在しているのでしょうか?

関連するQ&A