【C# IO 操作 】Big-endian 和 Little-endian 詳解


 首先,認識字節(Byte),計算機中Byte意思為“字節”,8個二進制位構成1個"字節(Byte)",即1Byte=8bit,字節是計算機處理數據的基本單位。所謂的大字端(Big Endian)和小字端(Little Endian)就是在存儲數據時遵循不同的字節排列順序,即字節序(Byte Order)不同。
 1.含義
  Big Endian:按照從低地址到高地址的順序存放數據的高位字節到低位字節,就是高位數字存儲在前面,例如:整數(int)573785173用十六進制表示就是0x22334455,其中“0x”是十六進制的標識符。這個數字有四個字節構成,字節值分別為0x22、0x33、0x44和0x55。在二進制文件中如果是按照大字端(Big Endian)的形式存儲,那么在文件中的順序是這樣:0x22、0x33、0x44、0x55,符合人類的正常思維。
 其中:  0x22被稱為最高有效字節(most significant byte, MSB);
               0x55被稱為最低有效字節(last significant byte, LSB)。
 
Little Endian: 按照從低地址到高地址的順序存放數據的低位字節到高位字節,就是低位數字在前面。同樣以上面的數字為例。0x22334455如果按照小字端(Little Endian)的形式存儲,那么它的字節值存儲順序為0x55、0x44、0x33、0x22。
 
 
 2.  二者的對比
  整數573785173的16進制表示:   0x22334455
                           假設存儲地址:   0x0155a800   0x0155a801  0x0155a802  0x0155a803
                           Big Endian法:              0x22               0x33             0x44             0x55
                           Little Endian:               0x55               0x44             0x33             0x22
 3.為什么要有大字端和小字端的區別?
  這其實與計算機的環境或CPU有關,對於大部分的CPU來說,字節都是按照Little形式存儲的,但是在一些情況下可能是按照Big形式存儲的,如在網絡上傳輸數字時。
4、常見字節序

一般操作系統是小端,通訊協議時大端。

CPU字節序。。。

文件字節序。。。

JAVA和網絡通信協議使用 Big-Endian編碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM