F450

ブログ > 2006年11月のエントリ

2006年11月のエントリ

2006年11月10日(金)のエントリ

2006/11/10(金) 20:27:11 (JST)

Perlでエンディアンをチェック

エンディアンとは
例えば16進数で 0x1234ABCD という4バイトのデータを、データの上位バイトからメモリに「12 34 AB CD」と並べる方式をビッグエンディアン (big endian)、データの下位バイトから「CD AB 34 12」と並べる方式をリトルエンディアン (little endian) という。
(「エンディアン - Wikipedia」より引用)
世の中にはビッグエンディアンでもリトルエンディアンでもないエンディアンが存在するらしいですが、今回は無視します。めんどくさいので。(え
さて、たとえば、ビッグエンディアンのマシンで0x1234ABCD(10進数で305441741)という数字をファイルに記録すると、ファイルには「\x12\x34\xAB\xCD」と記録されます。
このファイルをリトルエンディアンのマシンで読み込んで数字として解釈すると、その数字は0xCDAB3412(10進数で3450549266)となってしまいます。
こういった混乱を避けるためにもエンディアンをチェックしておくことは時として重要であると言えます。