windows x86是大端还是小端

1. 核心结论

Intel/AMD x86、x86_64 CPU 硬件架构原生只支持小端,Windows 系统全程使用小端存储多字节数值,不存在大端模式。

int num = 0x12345678 为例,内存字节排布: 地址低 → 地址高:0x78 0x56 0x34 0x12 低位字节存低地址 = 小端。

2. 什么场景会出现大端?

  1. 网络协议(TCP/IP)统一规定网络字节序 = 大端 ,收发数据要用 htonl/ntohl 转换;
  2. 文件格式自定义存储为大端(如部分图片、音视频格式);
  3. ARM、PowerPC 等架构可切换大小端,但和 x86 Windows 无关。

小端存储:

cpp 复制代码
    int ivalue=0x12345678;
    //字节从高到低:0x12(最高字节)、0x34、0x56、0x78(最低字节)
    pBuffer[iPtr++] = iValue & 0xFF;
    pBuffer[iPtr++] = (iValue >> 8) & 0xFF;
    pBuffer[iPtr++] = (iValue >> 16) & 0xFF;
    pBuffer[iPtr++] = (iValue >> 24) & 0xFF;

如果是大端存储:

cpp 复制代码
pBuffer[iPtr++] = (iValue >> 24) & 0xFF;
pBuffer[iPtr++] = (iValue >> 16) & 0xFF;
pBuffer[iPtr++] = (iValue >> 8) & 0xFF;
pBuffer[iPtr++] = iValue & 0xFF;