提供一種位元組序轉換實現的思路。
假使在一台64位的機器上定義的整數int val=0x01020304,轉換之後為0x04030201
(big-endian、little-endian跟多位元組型別的資料有關的比如int,short,long型,
而對單位元組資料byte卻沒有影響。big-endian就是低位位元組排放在記憶體的低端,高位位元組排放在記憶體的高階。而little-endian正好相反。
比如 int a = 0x05060708
在big-endian的情況下存放為:
位元組號 0 1 2 3
資料 05 06 07 08
在little-endian的情況下存放為:
位元組號 0 1 2 3
資料 08 07 06 05 )
空間上,只需要多位元組型別長度的儲存空間;時間上,無需通過算術運算儲存各位元組的十六進製制值,再做移位異或等操作得到轉換結果,提高了效率。
實現:#include
#include
using namespace std;
unsigned char* revert(unsigned char *pval, int size)
int main(void)
圖示:
網路位元組序與主機位元組序的轉換
在對ip位址結構體sockaddr in賦值的時候,經常會用到下列的函式htonl,htons,inet addr,與之相對應的函式是ntohl,ntohs,inet ntoa。檢視這些函式的解析,會發現這些函式其實是與主機位元組序和網路位元組序之間轉換有關。就是什麼網路位元組序,什麼是主機位元組序...
網路位元組序與主機位元組序的轉換
在對ip位址結構體sockaddr in賦值的時候,經常會用到下列的函式htonl,htons,inet addr,與之相對應的函式是ntohl,ntohs,inet ntoa。檢視這些函式的解析,會發現這些函式其實是與主機位元組序和網路位元組序之間轉換有關。就是什麼網路位元組序,什麼是主機位元組序...
網路位元組序與主機位元組序的轉換
在對ip位址結構體sockaddr in賦值的時候,經常會用到下列的函式htonl,htons,inet addr,與之相對應的函式是ntohl,ntohs,inet ntoa。檢視這些函式的解析,會發現這些函式其實是與主機位元組序和網路位元組序之間轉換有關。就是什麼網路位元組序,什麼是主機位元組序...