大小端模式
-
大端模式
是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
-
小端模式
是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
-
举例说明
- uint32_t value = 0x12345678,用uint8_t buf[4]来表示value;
- 大端模式:低地址存放高位,高地址存放低位;
- 低地址
-----------
buf[0] = 0x12 - - 高位
buf[1] = 0x34
buf[2] = 0x56
buf[3] = 0x78 - - 低位
-----------
高地址
- 低地址
- 小端模式:低地址存放低位,高地址存放高位;
- 低地址
-----------
buf[0] = 0x78 - - 低位
buf[1] = 0x56
buf[2] = 0x34
buf[3] = 0x12 - - 高位
-----------
高地址
- 低地址
-
应用领域
- 一些对于单片机的实现中是基于大端,比如Keil C51 、C52;
- 在英特尔处理器,Windows10操作系统上,VB6、VS2013下-控制台项目、VC++6.0-控制台工程、VS2013下-控制台项目,都是小端模式。
- 通信协议中的数据传输、数组的存储方式、数据的强制转换等这些都会牵涉到大小端问题。
-
各自优点
- 小端模式:强制转换数据不需要调整字节内容,比如int(4字节)转化成short(2字节),直接取出前面的低位两字节就可以了。
- 大端模式:数据存储地址与数据阅读顺序一致,容易根据地址寻找;符号位的判定固定为第一个字节,容易判断正负。