字节序(endianness)
database May 23rd, 2009在进行跨平台数据迁移时,有时候会涉及endian、MSB、LSB等概念。
endian应该是由end衍变而来,窃译为“末端的(人)”。而endianness一词,维基百科译为字节序或者端序,在计算机科学中指存放多字节数据的字节(byte)顺序。endianness有时候也用做位(bit)序。
MSB是 most significant byte 的简写,意为最高有效位。LSB(least significant byte )与其相对应,意为最低有效位。
对于多字节数据如整数,通常的存放方式有两种,Big-endian以及Little-endian。MSB存储在最低的内存地址处的称之为Big-endian,LSB存储在最低内存地址处的为Little-endian。
以内存中整数0x0A0B0C0D(16进制)的存放方式为例,列图如下:

x86,MOS Technology 6502,Z80,VAX,PDP-11等处理器为Little endian。
Motorola 6800,Motorola 68000,PowerPC 970,System/370,SPARC(除V9外)等处理器为Big endian
ARM, PowerPC (除PowerPC 970外), DEC Alpha, SPARC V9, MIPS, PA-RISC and IA64的字节序是可配置的。
可以通过如下的SQL做一个大致的了解:
SQL> set pagesize 100
SQL> col platform_name for a40
SQL> select * from v$transportable_platform;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
———– —————————————- ————–
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
已选择17行。
References:

Recent Comments