bool isLittle()
{
unsigned int val = 1;
return *((unsigned char *)&val);
}
もしマシンがリトルエンディアンなら、 val はLSBから順にメモリに格納されます。そのアドレスの値を読み取る事でリトルエンディアンかどうかを判定するという方法で、仕事で使うには少し薄気味悪いですが、フリーのライブラリに含めておくにはぴったりのコードだと感じられました。というか実際にフリーのライブラリで見かけたんですが。 (^^;
導入者に設定を返させたり、定数をあれこれさせるよりすっきりしていると思います。
2 件のコメント:
このコード正しく動作します?
16bitマシンなら正常に動作しそうな気もしますが、32bitや64bitマシンでは正しくない結果が返りそうな・・
失礼しました。
ちゃんと動きそうですね。
コメントを投稿