2008年2月5日火曜日

エンディアン問題

 最近、発表の準備でまた少しやることが増え、研究室に引きこもりがち。今日もそんな生活で、はやく終わらせようと作業をしていた時のお話し。
 
 普段、用いている計算用サーバのCPUはインテル製。得られたデータを用いてグラフを作成するときも同じくインテル製のCPUを持つ計算機を用いている。ところが、わけあって、Sunの計算機を用いる場合もある。Sunの計算機で得たデータは、Sunの計算機で解析し、グラフを作成している。

 ところが、今日はわけあって、Sunの計算機で得られたデータを、インテル製のCPUを持つ計算機で解析を行うことに。データをそのままコピーし、同じプログラムを走らせて解析を開始。得られた結果を見ると、グラフが作成されていない。

 これはどういうことかと、少し頭を悩ませた。そのとき、エンディアン問題を思い出した。得られたデータはバイナリ形式で保存しているのだが、インテル製(インテル系?)CPUはリトルエンディアン形式で、Sunはビッグエンディアン形式でデータを保存するのだった。そのため、データを読み込む際にもこのことを考慮する必要があったのだ。本当に煩わしい。

 これを解決するのに大分時間をとられました><。

0 件のコメント: