C/400

129. ASCII保存数とEBCDIC保存数のちがい (リトル・エンデアンとビッグ・エンデアン)

Power Systems (IBM i / AIX) と PC(Windows / LINUX) などとの数字の保存の方法は
異なっているので C言語の開発者に注意を促したい。
IBM i で int型の 4バイト整数の表記は例えば 1であれば

0x00000001 と表現し HDD などに保存するときは

0000
0001 のように 4バイトで保存する。

これは IBM i の開発者であれば何の違和感もない当たり前のことに思える。
しかし Windows などに保管されている int型の 4バイトの整数は HDD内では

0000
1000 のように小さい低バイトの数から大きいほうに向かって記述する。

つまり IBM i では 1234 と記述保管されていたものが
Windows では 4321 と逆順になる。
この表記を前者 (IBM i) はビッグ・エンデアンと呼び
後者 (Windows) はリトル・エンデアンと呼ぶ。
このことを理解しておかないと Windows で使用されているデータを
IBM i の IFS にアップロードして C/400 で解析しようとすると
まるで意味をなさない数字の羅列となってしまう。
面倒だが IBM i 側ではリトル・エンデアンビッグ・エンデアン
変換して解釈してやる必要がある。