摘要:你知道内存是怎么读取数据的吗?知道数据是怎么一个一个字节发送的吗?是低字节先发还是高字节先发?
大端模式和小端模式
大端模式和小端是实际的字节顺序和存储的地址顺序对应关系的两种模式
- 大端模式:高位字节存放在低地址中,低位字节存放在高地址中
- 小端模式:高位字节存放在高地址中,低位字节存放在低地址中
例:
32bit 的数 0x12345678 分别在大端和小端模式下,在内存中存放方式如下
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
---|---|---|---|---|
小端模式 | 0x78 | 0x56 | 0x34 | 0x12 |
大端模式 | 0x12 | 0x34 | 0x56 | 0x78 |
内存的读写永远从低地址开始读/写
大端存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
小端模式则相反
如何判断系统的存储模式
uint32_t a = 0x12345678;
char *b = (char *)&a;
printf("0x0%x\n",*b);
输出0x12 是大端,0x78 则是小端