一、基本概念位的概念:
在计算机中,一个0或1称为一位(bit)。
字节:连续的八位称为一个字节(Byte),字节是计算机中可单独处理的最小单位。
即以字节为基本单位来解释信息,规定1个字节是8个二进制位。
通常1个ASCII码用1个字节存放,1个汉字用2个字节存放,双精度浮点实数用8个字节存放。
二、字节顺序由来
在写字符流时,因为字符型只占一个字节数,计算机只须按一个字符一个字符写入文件即可。
但是如果是处理整型时,由于整型占4个字节,所以一个整型内部的字节存储排列的顺序直接关系到被计算机识别出来的整型值.
某种意义上也可直接理解计算机的识别顺序就是所谓的字节顺序。
三、一些有关字节顺序的解释
不同的计算机结构有时使用不同的字节顺序存储数据。
例如,基于Intel的计算机存储数据的顺序与Macintosh(Motorola)计算机就是相反的。
Intel字节顺序称为“Little-Endian”,反之Macintosh(Motorola),还有网络上采用标准是“Big-Endian”。
在将应用程序从一种架构类型迁移至另一种架构类型的过程中,经常会遇到字节排列顺序(endianness)问题。
字节排列顺序是数据元素及其单个字节在内存中存储和表示时的顺序。
通过以上分析,会发现有两类字节排列顺序:
big-endian (通常为网络字节顺序)和
little-endian(主机字节顺序)。
目前应该little endian是主流
下面是这些术语的解释:
Big-Endian 最重要的字节在整个内容的左端。
Little-Endian 最重要的字节在整个内容的右端。
Big Endian
低地址 高地址
高位字节 低位字节
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 12 | 34 | 56 | 78 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian
低地址 高地址
低位字节 高位字节
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 78 | 56 | 34 | 12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
对于big-endian处理器,在将字放在内存中时,是从最低位地址开始的,首先放入最重要的字节。
对于little-endian处理器,如Intel处理器,首先放入的是最不重要的字节。
四、ORACLE中通过查看V$TRANSPORTABLE_PLATFORM视图查看各主机OS平台是属于大/小字节序
BYS@ bys3>col PLATFORM_NAME for a40
BYS@ bys3>select PLATFORM_ID,PLATFORM_NAME from v$database; 查当前平台的字节情况
PLATFORM_ID PLATFORM_NAME
----------- --------------------
10 Linux IA (32-bit)
BYS@ bys3>
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 x86 64-bit Little
16 Apple Mac OS Big
12 Microsoft Windows x86 64-bit Little
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
19 HP IA Open VMS Little
20 Solaris Operating System (x86-64) Little
21 Apple Mac OS (x86-64) Little
20 rows selected.