歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言網絡編程之--字節順序

C語言網絡編程之--字節順序

日期:2017/3/1 10:01:29   编辑:Linux編程

字節順序是指占內存多於一個字節類型的數據在內存中的存放順序,各個數據類型在內存中的字節長度可以用sizeof(類型關鍵字)獲得。那麼字符是如何存放到內存中的呢?

計算機存儲字符有兩種順序:高位字節優先和地位字節優先。那如何理解“高位”字節和“地位”字節呢?我們來看一個數值0x1234在內存的存儲方式:

地址 地址1 地址2 地址3 地址4 高位字節優先 4 3 2 1 低位字節優先 1 2 3 4

由於一個內存地址是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傳輸,就要將數據轉換成高位字節優先的順序。有時候,高位字節優先順序也稱為網絡字節順序,低位字節優先順序也稱為主機字節順序。

Copyright © Linux教程網 All Rights Reserved