- 締切済み
エンディアンを知るには
リトルエンディアンのマシンで作ったバイナリデータをいろいろなマシンで読み込みたいのですが、一部がビッグエンディアンなので変換の必要があります。ただ、ソースを共通にしたいのでエンディアンを知ることができるマクロの値でエンディアンの違いの処理を行いたいのですが、どのようなマクロを使えばいいのでしょうか?
- みんなの回答 (11)
- 専門家の回答
リトルエンディアンのマシンで作ったバイナリデータをいろいろなマシンで読み込みたいのですが、一部がビッグエンディアンなので変換の必要があります。ただ、ソースを共通にしたいのでエンディアンを知ることができるマクロの値でエンディアンの違いの処理を行いたいのですが、どのようなマクロを使えばいいのでしょうか?
お礼
お礼と補足がいれかわってしまいました。 補足です。 コンパイラを特定しないといけませんでした。コンパイラは gcc とお考えください。CPU は Intel系(開発に使うPC)、ARM(DS)、MIPS(PS2、PSP)、PowerPC(WII) です。
補足
ご回答ありがとうございます。 コンパイル時にはCPUが決まっているので、コンパイラはエンディアンを知っているはずであり、 #ifdef BIG_ENDIAN // エンディアンの変換処理 #endif という感じで使えるマクロがあるのではないかと思って質問してみたのですが、、、 PDPはおそらく一生使うことは無いでしょう。というか、現在世の中に存在しているのでしょうか?