一、 核心概念:大端 vs 小端
在存储一个超过 1 字节的数据(比如int类型,占 4 字节)时,内存中字节的排列顺序有两种流派。
假设我们要存储十六进制数0xAB5C01FF。
1. 小端存储 (Little-Endian)
- 规则:低位字节存放在低地址。
- 口诀:“低低高高”。
- 场景:大部分个人电脑(PC/x86架构)。
- 内存样子:
(注:地址:0x00 0x01 0x02 0x03 数据:FF 01 5C ABFF是数值的最低位,被放在了内存的最低地址0x00)
2. 大端存储 (Big-Endian)
- 规则:高位字节存放在低地址。
- 口诀:“低高高低”。
- 场景:网络传输标准、部分服务器架构。
- 内存样子:
(注:这与我们的书写阅读顺序完全一致,非常符合人类逻辑)地址:0x00 0x01 0x02 0x03 数据:AB 5C 01 FF
二、 代码实战 1:验证0xAB5C01FF的存储
笔记中提到了0xAB5C01FF这个特定的数字。我们写一段 C 代码,亲眼看看它在你的电脑内存里到底长什么样。
代码 (endian_check.c)
#include<stdio.h>intmain(){// 定义笔记中的示例数值unsignedintnum=0xAB5C01FF;// 使用 unsigned char 指针指向 num 的首地址// 这样可以按字节访问内存unsignedchar*ptr=(unsignedchar*)#printf("原始数值: 0x%X\n",num);printf("--------------------------------\n");printf("内存地址 (低 -> 高) | 存储内容\n");printf("--------------------------------\n");for