字節順序是指占內存多於一個字節類型的數據在內存中的存放順序,各個數據類型在內存中的字節長度可以用sizeof(類型關鍵字)獲得。那麼字符是如何存放到內存中的呢?
計算機存儲字符有兩種順序:高位字節優先和地位字節優先。那如何理解“高位”字節和“地位”字節呢?我們來看一個數值0x1234在內存的存儲方式:
由於一個內存地址是1個字節的大小,即地址1、地址2、地址3、地址4的大小都是1個字節。假設數值0x1234中的“1”、“2”、“3”、“4”字符都占用一個字節的長度,那麼就有如下存儲順序:
低位字節優先:假設申請到的地址的編號是從1--4這樣編號的,於是,地址1就是低位字節,地址4就是高位字節。根據低位字節優先存儲的順序,數值0x1234中的字符“1”就先進入地址1,然後字符“2”就進入地址2……最後地址4接收最後一個字符“4”。
高位字節優先:假設申請到的地址編號是從1--4這樣編號的,於是,地址1是低位字節,地址4是高位字節。高位字節優先就是先存滿高位字節再考慮低位字節。數值0x1234中的字符“1”就先進入地址4,然後字符“2”就進入地址3……最後,地址1接收最後一個字符“4”。
一般來說,Internet上的數據使用的是高位字節優先,基於x86的PC機上的數據是低位字節優先。所以,使用了基於x86上的數據要通過Internet傳輸,就要將數據轉換成高位字節優先的順序。有時候,高位字節優先順序也稱為網絡字節順序,低位字節優先順序也稱為主機字節順序。