sunday-labの日本語訳版です。英語版のXOOPS Cube関連記事を翻訳作業中...

ラベル エンディアン の投稿を表示しています。 すべての投稿を表示
ラベル エンディアン の投稿を表示しています。 すべての投稿を表示

2008年1月24日木曜日

Is little endian or big endian?

ターゲットマシンがリトルエンディアンか、ビッグエンディアンかを自動でチェックする面白いコードを見かけました。


bool isLittle()
{
unsigned int val = 1;
return *((unsigned char *)&val);
}


もしマシンがリトルエンディアンなら、 val はLSBから順にメモリに格納されます。そのアドレスの値を読み取る事でリトルエンディアンかどうかを判定するという方法で、仕事で使うには少し薄気味悪いですが、フリーのライブラリに含めておくにはぴったりのコードだと感じられました。というか実際にフリーのライブラリで見かけたんですが。 (^^;

導入者に設定を返させたり、定数をあれこれさせるよりすっきりしていると思います。