endianを確認する
#include <stdio.h> #include <string.h> int main() { int i; unsigned char s[4]; int *ptr = (int*)s; memset(s, 0, sizeof s); *ptr = 0x00ff00ff; for (i = 0; i < 4; i++) printf("s[%d] = 0x%x\n", i, s[i]); return (0); }
大体の計算機(PC)では1byteごとに値を保存します。 このとき2byte以上の値を保存するときに最下位biteから格納するものを intel系のlittle endianと呼び最上位からbitを格納するものをmotorola系のbig endianと呼びます。 なお、実行環境はlittle endianを使用しています。
$ gcc -o endian endian.c -g $ ./endian s[0] = 0xff s[1] = 0x0 s[2] = 0xff s[3] = 0x0