什么是字节序?
字节序(Endianness)是指在计算机内存中多字节数据(如整数、浮点数)的字节排列顺序。 主要有两种类型:
- 大端序(Big-endian):高位字节存放在低地址。
- 小端序(Little-endian):低位字节存放在低地址。
示例说明
假设有一个 32 位整数 0x12345678,其在内存中的存储方式如下:
大端序(Big-endian)
地址: 0x00 0x01 0x02 0x03 值: 0x12 0x34 0x56 0x78
小端序(Little-endian)
地址: 0x00 0x01 0x02 0x03 值: 0x78 0x56 0x34 0x12
如何判断系统字节序?
以下是一个简单的 JavaScript 方法,用于检测当前运行环境的字节序:
function checkEndianness() {
const buffer = new ArrayBuffer(2);
const view = new DataView(buffer);
view.setUint16(0, 0x1234, false); // 使用大端写入
return new Uint8Array(buffer)[0] === 0x12 ? 'Big-endian' : 'Little-endian';
}
console.log('当前系统字节序:', checkEndianness());
常见应用场景
- 网络协议(如 TCP/IP)通常使用大端序(也称为网络字节序)。
- x86 架构 CPU(如 Intel、AMD)普遍使用小端序。
- 某些嵌入式系统或旧架构(如 Motorola 68000)使用大端序。