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