매번 헷갈리는 개념이 endian 개념이다.
간단하게 말해 big endian은 그냥 쓰는 거고, Little endian은 뒤집어서 쓰는거다..
예를 들면, "4F52"를 저장할 때에, atomic 단위가 1 byte라면
- 4F52(4F - 1000번지, 52 - 1001번지) 로 저장되면 big endian
- 524F(52 - 1000번지, 4F - 1001번지)로 저장되면 little endian
인 것이다.
Endian 여부를 파악할 수 있는 함수를 wikipedia에서 찾아왔다.
#define LITTLE_ENDIAN 0
#define BIG_ENDIAN 1
int machineEndianness()
{
long int i = 1;
const char *p = (const char *) &i;
if (p[0] == 1) // Lowest address contains the least significant byte
return LITTLE_ENDIAN;
else
return BIG_ENDIAN;
}
long int 형은 4 byte이고, 0x00000001 일 것이므로
big endian이라면 첫 번째 바이트에 0x00이
little endian이라면 첫 번째 바이트에 0x01이 저장될 것이다.
이와 같이 하면, endian 여부를 파악할 수 있을것이다.
