什么是大端? 什么是小端?
在搞明白大小端之前,先看2个概念,高低字节和高低地址
高低字节
高低字节类似于数字表示的位数,如果把unsigned int看成是千位的话,从左到右依次千位,百位,十位,个位,左高右低。
- 对于一个字节的数据(char/unsigned char/bool)而言,没有高低字节之分。
- 只有大于一个字节以上的数据才要区分高低字节。
高低地址
- 计算机的基本存储单位是字节(byte),1byte = 8bit,从00000000到11111111表示的范围是[0,255]。
- 对于内存中的每一个字节(byte),都有一个索引编号,就是指针,也即地址,索引是从0开始,从左到右依次增大,所以左边被称为低地址,右边被称为高地址。
大端,小端
盗用维基百科上的2张图来解释下大小端。

大端
根据大端的定义:数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中。
根据小端的定义:数据的低字节保存在内存的低地址中,数据的高字节保存在内存的高地址中。
比如十六进制数0xDC6E35FF
,从左到右依次是高字节到低字节,因为从左到右同时是由低地址到高地址,如果按照小端存储,则0xDC6E35FF
在内存中对应存储为0xFF356EDC
,如果按照大端存储,则应该是0xDC6E35FF
。
如何判断大端还是小端
用python
查看:
1 | python -c "import sys; print(sys.byteorder)" |
用c
查看:
1 |
|
参考链接: