【C/C++】字节序
2026/6/1 0:31:36 网站建设 项目流程

字节序检测程序解释

#include<stdio.h>intmain(){intx=0x1;char*p=(char*)&x;if(*p==1)printf("little endian\n");elseprintf("big endian\n");for(inti=0;i<sizeof(int);i++)printf("%p: %04d\n",p+i,*(p+i));}

核心原理

int x = 0x00000001 在内存中的存储: 小端序 (Little Endian): 大端序 (Big Endian): 低地址 → 高地址 低地址 → 高地址 [01][00][00][00] [00][00][00][01] ↑ ↑ p 指向这里 p 指向这里

代码逐行解析

intx=0x1;// x = 0x00000001char*p=(char*)&x;// p 指向 x 的第一个字节(最低地址)

char *让我们可以一次只读一个字节。

if(*p==1)// 检查最低地址存的是什么
  • 如果*p == 1:最低地址存的是0x01(最低有效字节) →小端序
  • 如果*p == 0:最低地址存的是0x00(最高有效字节) →大端序

运行结果示例(小端序机器,如 x86)

little endian 0x7ffd1234: 0001 ← 最低有效字节在低地址 0x7ffd1235: 0000 0x7ffd1236: 0000 0x7ffd1237: 0000

记忆方法

字节序含义低地址存放
Little Endian小端在前最低有效字节(LSB)
Big Endian大端在前最高有效字节(MSB)

小端序像"倒着写":0x01020304存为[04][03][02][01]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询