大端小端以及判别方式
大端与小端字节序详解
基本概念
字节序(Endianness)是指多字节数据在内存中的存储顺序,主要分为两种:
-
大端序(Big Endian):高位字节存于低地址,低位字节存于高地址,符合人类阅读习惯。
例如,数值0x12345678
在大端序中存储为:12 34 56 78
。 -
小端序(Little Endian):低位字节存于低地址,高位字节存于高地址,更符合计算机处理逻辑。
例如,数值0x12345678
在小端序中存储为:78 56 34 12
。
常见平台的字节序
- 大端序:网络协议(如 TCP/IP)、PowerPC、SPARC、早期的 Macintosh
- 小端序:x86/x64 架构(Intel/AMD)、ARM(可配置)、大多数 PC 平台
- 双端序:ARM、MIPS 等处理器支持通过配置切换
#include <iostream> #include <cstdint> #include <type_traits>// 方法1:使用联合体(Union)检测字节序 bool isLittleEndianByUnion() {union {