天天看點

關于Big-Endian/Little-Endian 位元組順序的簡單記錄

一、基本概念位的概念:

在計算機中,一個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平台是屬于大/小位元組序

[email protected] bys3>col PLATFORM_NAME for a40

[email protected] bys3>select PLATFORM_ID,PLATFORM_NAME from v$database;  查目前平台的位元組情況

PLATFORM_ID PLATFORM_NAME

----------- --------------------

         10 Linux IA (32-bit)

[email protected] 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.

繼續閱讀