關於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平臺是屬於大/小位元組序
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)
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.
相關文章
- c# 主機和網路位元組序的轉換 關於網路位元組序和主機位元組序的轉換C#
- Big-Endian Little-Endian
- 分享:大端小端-位元組儲存順序
- 順序棧的簡單操作
- 異構OS平臺的不同點 - 位元組順序
- little-endian VS. big-endian
- Modbus通訊協議中的四種位元組順序協議
- 關於 Promise 的執行順序Promise
- 關於RocketMQ的順序訊息MQ
- 理解位元組序
- 關於java的初始化順序Java
- PHP實現簡單順序棧PHP
- modbus和位元組序
- Activiti學習筆記二:簡單順序流演示demo筆記
- scRNA_seq:單細胞轉錄組測序簡介
- 第五篇:主機位元組序與網路位元組序的轉換
- 關於JAVA中順序IO的基本操作Java
- javascript執行順序簡單介紹JavaScript
- 大端序、小端序、網路位元組序
- jQuery ajax的執行順序簡單介紹jQuery
- 擴充理解位元組序
- 關於位元組陣列QByteArray陣列
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序
- 關於defer執行順序問題
- 關於jvm載入類的實現順序JVM
- 順序審批流的簡單程式碼實現
- css選擇器的解析順序簡單介紹CSS
- 關於字元 位元組 python3字元Python
- C++與Qt的位元組序探究:C++QT
- Qt 大小端位元組序的處理QT
- Go語言實現位元組記錄鎖Go
- 關於 SAP Spartacus Angular HTTP Interceptor 的攔截順序AngularHTTP
- 關於CSS樣式的優先順序問題CSS
- js程式碼執行順序簡單介紹JS
- javascript表示式中的運算順序簡單介紹JavaScript
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 字元編碼發展史6 — BOM位元組序標記字元
- 轉: 關於oracle 是按照寫入順序還是ROWID順序取資料Oracle