大端模式,是指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中
小端模式,是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中
- c代碼判斷大小端的方法一般使用union共用體
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
union { short s; char c[2]; } endian_test;
endian_test.s = 0x0102;
if (memcmp(endian_test.c, "\x01\x02", 2) == 0)
printf("big_endian\n");
else if (memcmp(endian_test.c, "\x02\x01", 2) == 0)
printf("little_endian\n");
else
abort();
return 0;
}
以代碼endian_test.s = 0x0102;爲例,分別看看在兩種字節序下其存儲情況,我們可以用endian_test.c來表示value
Big-Endian: 低地址存放高位,如下:
高地址
---------------
buf[1] (0x02) -- 低位
buf[0] (0x01) -- 高位
---------------
低地址
Little-Endian: 低地址存放低位,如下:
高地址
---------------
buf[1] (0x01) -- 高位
buf[0] (0x02) -- 低位
--------------
低地址