little endian和big endian的差別在於放入記憶體的值,
順序是相反的。
假設我有個值是12345換成二進制是:
11000000111001
再換成十六進制
0000 0000 0000 0000 0011 0000 0011 1001
0 0 0 0 3 0 3 9 = 0x00003039
1 char = 1 byte = 8 bits
Big endian
00 | 00 | 30 | 39
a a+1 a+2 a+3
Little endian
39 | 30 | 00 | 00
a a+1 a+2 a+3
所以我用判斷式來看是哪一種,
unsigned int x = 12345;
char *a = (char*) &x;
if(*a == 0x39)
printf("Little endian\n");
else
printf("Big endian\n");
====Output=====
*a is: 0x39
*(a+1) is: 0x30
*(a+2) is: 0x0
*(a+2) is: 0x0
Little endian
Ref
Ref_2
沒有留言:
張貼留言