一、字节序
在计算机科学领域中,字节序(Endianness)是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。
1、主机序
多字节数据在计算机内存中的存放顺序。
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:
大端模式(big endian):高字节放到低地址上
地址 |
值 |
1000 |
0A |
1001 |
0B |
1002 |
0C |
1003 |
0D |
小端模式(little endian):高字节放到高地址上
地址 |
值 |
1000 |
0D |
1001 |
0C |
1002 |
0B |
1003 |
0A |
2、网络序
多字节数据在网络中的传输顺序。IP协议用大端序作为网络字节序,因此大端序也称为网络序。
二、字节序与什么有关
字节序与计算机的体系架构及操作系统有关。
小端序(基于架构的操作系统)
DragonFlyBSD on x86, and x86-64
FreeBSD on x86, x86-64, and Itanium
Linux on x86, x86-64, MIPSEL, Alpha, Itanium, S+core, MN103, CRIS, Blackfin, MicroblazeEL, ARM, M32REL, TILE, SH, XtensaEL and UniCore32
Mac OS X on x86, x86-64
iOS on ARM
NetBSD on x86, x86-64, Itanium, etc.
OpenBSD on x86, x86-64, Itanium, etc.
OpenVMS on VAX, Alpha and Itanium
Solaris on x86, x86-64, PowerPC
Tru64 UNIX on Alpha
ESX on x86, x86-64
Windows on x86, x86-64, Alpha, PowerPC, MIPS and Itanium
大端序(基于架构的操作系统)
AIX on POWER
AmigaOS on PowerPC and 680x0
FreeBSD on PowerPC and SPARC
HP-UX on Itanium and PA-RISC
Linux on MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, z/Architecture, H8, FR-V, AVR32, Microblaze, ARMEB, M32R, SHEB and Xtensa.
Mac OS on PowerPC and 680x0
Mac OS X on PowerPC
NetBSD on PowerPC, SPARC, etc.
OpenBSD on PowerPC, SPARC, etc.
MVS and DOS/VSE on ESA/390, and z/VSE and z/OS on z/Architecture
Solaris on SPARC
三、字节序转换