大小端字节序说到字节序它描述的是一个多字节数值在内存里存放时高位字节和低位字节的排列顺序。其有大小端之分。大端低内存地址放高位字节高内存地址放低位字节。小端低内存地址放低位字节高内存地址放高位字节。对于一个数比如说 int 类型 的 1我们截取它的第四位bit为00 01。左边的 0 是高位字节右边的 1 为低位字节。我们又知道栈的使用是由高地址向低地址的数值大的为高地址比如0xFFF0与0xFFF5相比0xFFF5 是高地址。对于这个我发现了一个 vs 2022 的一个特性详细请看本文后面的补充内容。由此可得如果按照大端存储那么应该是如下情况大小端字节序属于存储数据的组织方式不是 CPU 硬件电路本身的 “硬件特性”但受硬件架构决定有些CPU甚至支持切换大小端。所以我们是不能自主选择大小端的不过在网络传输的时候规定统一使用大端序也叫网络字节序。补充vs 2022的 “奇怪” 现象局部变量是存放在内存中的如果我们创建的变量有先后关系那么根据栈的增长方向可知先创建的变量的地址是比后创建的变量的地址要更高的但是在vs 2022 中发现可以看到这里 a 先被创建并被赋值 1b 后创建赋值为 2。a0x00000001f87aff7c4b0x00000001f87aff7e4b 的地址比 a 的更大也就是 b 处于更高的地址。很显然这不对但为什么呢经过一番研究原来在 vs 2022 的 x64 Debug下编译器会把该栈帧所需空间一次性开好然后对于变量的安排便不再严格遵守 “先定义的变量地址更高” 这个简单结论。如果换成 x86我们发现结果就和预期相符了