日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)...

發(fā)布時(shí)間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們知道在由于大端機(jī)和小端機(jī)導(dǎo)致網(wǎng)絡(luò)字節(jié)序和主機(jī)序有可能是有差異的,我們可以使用系統(tǒng)的ntohs,ntohl,htons和htonl這些處理函數(shù)進(jìn)行轉(zhuǎn)換,下面是我寫(xiě)的一個(gè)關(guān)于ntohs在處理小端機(jī)字節(jié)序轉(zhuǎn)換的函數(shù)的簡(jiǎn)單實(shí)現(xiàn).

思想大致如下:

用u_int16_t的2字節(jié)16位的整形變量來(lái)存儲(chǔ)這個(gè)整數(shù),首先將第一個(gè)字節(jié)和該變量進(jìn)行或運(yùn)算,運(yùn)算結(jié)果左移八位,于是剛才的第一個(gè)字節(jié)結(jié)果就到了高八位,然后在與第二個(gè)字節(jié)進(jìn)行或運(yùn)算盡可以了
代碼如下:

u_int16_t convert16(u_char *p)

{

  u_int16_t tmp = 0;

  tmp |= p[0];

  tmp <<= 8;

  tmp |= p[1];?

  return tmp;

 }

這樣就可以了。

由于是為了獲取DNS頭部中的資源數(shù)和附加數(shù)據(jù)中的數(shù)據(jù)長(zhǎng)度部分而遇到的這個(gè)問(wèn)題順便簡(jiǎn)單介紹一下DNS的一些知識(shí):

DNS報(bào)文的首部格式如下:

?

                      0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 15 16 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 31

標(biāo)識(shí)ID

標(biāo)志

問(wèn)題數(shù)

資源記錄數(shù)

授權(quán)資源記錄數(shù)

額外資源記錄數(shù)

查詢問(wèn)題

回答

授權(quán)信息

額外信息

?

如上圖的NDS報(bào)文,正事由于資源記錄數(shù)和額外資源記錄數(shù)是用兩字節(jié)的16進(jìn)制表示,才會(huì)有我所說(shuō)的問(wèn)題,希望對(duì)大家有幫助!

下面這個(gè)是可以針對(duì)三字節(jié)表示長(zhǎng)度的一個(gè)網(wǎng)絡(luò)序和主機(jī)節(jié)序的轉(zhuǎn)換,比如計(jì)算三字節(jié)表示數(shù)據(jù)長(zhǎng)度的網(wǎng)絡(luò)字節(jié)序時(shí),不過(guò)還是要用系統(tǒng)的函數(shù)轉(zhuǎn)換好,這里用到了太多乘法,效率會(huì)很低。

int hex2int(uint8_t u8_hex[])
{
?  int len = 0;

  len = u8_hex[0]*16*16*16*16 + u8_hex[1]*16*16 + u8_hex[2];
?
  ?return len;
}

轉(zhuǎn)載于:https://www.cnblogs.com/daimadebanyungong/p/4246564.html

總結(jié)

以上是生活随笔為你收集整理的ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。