大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
- 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) -- 低位
--------------
低地址