在进行跨平台数据迁移时,有时候会涉及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进制)的存放方式为例,列图如下:

end

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:

http://www.eygle.com/digest/2007/01/whats_mean_endian.html

http://www.wikipedia.org/