Htons():【摘自百度百科】
htons是將整型變量從主機字節順序轉變成網絡字節順序, 就是整數在地址空間存儲方式變為:高位字節存放在內存的低地址處。
網絡字節順序是TCP/IP中規定好的一種數據表示格式,它與具體的CPU類型、操作系統等無關,從而可以保證數據在不同主機之間傳輸時能夠被正確解釋,網絡字節順序采用big-endian排序(大尾順序)方式。
因為項目中需要,設定例如來自端口號為9877的數據要做些什么處理,在上層設置了9877這個數字,但是讀取TCP頭部(TCP頭部的前十六字節為源端口號),發現不是原想的9877這個數,而是38182。
因為他是傳入9877,通過htons()函數轉變為網絡字節順序(見上),也就能理解為何網絡編程時候會使用:servaddr.sin_port=htons(9877);
但是因為在開發板的內核中,無法直接調用這個函數,所以需要自己實現該功能,結合網上查找,方法實現如下:#define BigLittleSwap16(A) ((((uint16)(A) & 0xff00) >> 8) | (((uint16)(A) & 0x00ff) << 8))
int checkCPUendian()
{
union{
unsigned long int i;
unsigned char s[4];
}c;
c.i = 0x12345678;
return (0x12 == c.s[0]);
}
unsigned short int H