青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Young's Blog

包子鋪

使用Bit Field的教訓

總結一下,長點記性:
Bit Field總是從低地址往高地址計算。

DNS的網絡數據中有兩個字節的標志位(下面來自真實數據):
0x81 0x80
這個標志位分別表示:
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... .... 0000 = Reply code: No error (0)

想都沒有再想,下意識地寫了下面的結構體(惡夢開始了):
struct NetworkOrder
{
union{
unsigned short Flags;
struct{
unsigned short Response:1;
unsigned short Opcode:4;
unsigned short Authoritative:1;
unsigned short Truncated:1;
unsigned short RecursionDesired:1;
unsigned short RecursionAvailable:1;
unsigned short Zero:1;
unsigned short AnswerAuthenticated:1;
unsigned short Pad:1;
unsigned short ReplyCode:4;
};
};
};

解析結果當然不對:
{
Flags = 0x8081,
{
Response = 0x1,
Opcode = 0x0,
Authoritative = 0x0,
Truncated = 0x0,
RecursionDesired = 0x1,
RecursionAvailable = 0x0,
Zero = 0x0,
AnswerAuthenticated = 0x0,
Pad = 0x0,
ReplyCode = 0x8
}
}

然后又下意識地想(其實根本沒有經過想的過程,要不然也不會這么慘了),可能是字節序的問題,換成主機序:
struct NetworkOrder
{
    union{
        unsigned short Flags;
        struct{
            unsigned short Response:1;
            unsigned short Opcode:4;
            unsigned short Authoritative:1;
            unsigned short Truncated:1;
            unsigned short RecursionDesired:1;

            unsigned short RecursionAvailable:1;
            unsigned short Zero:1;
            unsigned short AnswerAuthenticated:1;
            unsigned short Pad:1;
            unsigned short ReplyCode:4;
        };  
    };  
};

我靠,結果還不對:
{
Flags = 0x8081,
{
Response = 0x1,
Opcode = 0x0,
Authoritative = 0x0,
Truncated = 0x0,
RecursionDesired = 0x1,

RecursionAvailable = 0x0,
Zero = 0x0,
AnswerAuthenticated = 0x0,
Pad = 0x0,
ReplyCode = 0x8
}
}

這個時候背上直冒冷汗,這么簡單的問題自己都沒搞定,快速從腦海中掃了一遍char、short、int在處理數據上的差異......想了半天,
只好用最后的笨辦法了,看一下到底是怎么回事,再次改變一下結構:
struct NetworkOrder3
{
    union{
        unsigned short Flags;
        struct{
            unsigned short A0:1;
            unsigned short A1:1;
            unsigned short A2:1;
            unsigned short A3:1;

            unsigned short B0:1;
            unsigned short B1:1;
            unsigned short B2:1;
            unsigned short B3:1;

            unsigned short C0:1;
            unsigned short C1:1;
            unsigned short C2:1;
            unsigned short C3:1;

            unsigned short D0:1;
            unsigned short D1:1;
            unsigned short D2:1;
            unsigned short D3:1;
        };
    };
};
結果出來一看,恍然大悟:
{
Flags = 0x8081,
{
A0 = 0x1,
A1 = 0x0,
A2 = 0x0,
A3 = 0x0,

B0 = 0x0,
B1 = 0x0,
B2 = 0x0,
B3 = 0x1,

C0 = 0x0,
C1 = 0x0,
C2 = 0x0, 
C3 = 0x0,

D0 = 0x0,
D1 = 0x0,
D2 = 0x0,
D3 = 0x1
}
}
我靠,平時Bit Field用得少,老是一個字節,兩個字節地考慮,忘了它從低地址開始一位一位往上計算的,修改最后的結構,得到正確的結果:
struct NetworkOrder4
{
    union{
        unsigned short Flags;
        struct{
            unsigned short RecursionDesired:1;
            unsigned short Truncated:1;
            unsigned short Authoritative:1;
            unsigned short Opcode:4;
            unsigned short Response:1;

            unsigned short ReplyCode:4;
            unsigned short Pad:1;
            unsigned short AnswerAuthenticated:1;
            unsigned short Zero:1;
            unsigned short RecursionAvailable:1;
        };
    };
};
結果:
{
Flags = 0x8081,
{
RecursionDesired = 0x1,
Truncated = 0x0,
Authoritative = 0x0,
Opcode = 0x0,
Response = 0x1,

ReplyCode = 0x0,
Pad = 0x0,
AnswerAuthenticated = 0x0,
Zero = 0x0,
RecursionAvailable = 0x1
}
}

真是慚愧啊,好記性不如爛筆頭,記在這里引以為簽。




posted on 2010-01-31 00:00 Young 閱讀(793) 評論(1)  編輯 收藏 引用

Feedback

# re: 使用Bit Field的教訓 2010-02-08 16:37 ABC

更新好慢啊。。。  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品一区二区三区四区高清| 亚洲精品在线观| 久久久久这里只有精品| 国产偷自视频区视频一区二区| 亚洲欧美日韩国产一区| 久久网站免费| 最新高清无码专区| 国产精品你懂得| 久久久久中文| 日韩网站在线看片你懂的| 久久精品视频在线看| 亚洲欧洲综合| 亚洲已满18点击进入久久| 亚洲国产成人精品久久久国产成人一区| 欧美α欧美αv大片| 国产精品99久久久久久久vr| 久久亚洲精品网站| 最新高清无码专区| 欧美精品在线视频| 亚洲欧美日产图| 久久综合久色欧美综合狠狠| 一区二区三区四区精品| 欧美大胆成人| 久久久久久久久蜜桃| 亚洲欧美一区二区三区在线 | 亚洲少妇在线| 国产午夜精品久久久| 亚洲国产精品一区二区尤物区| 一本大道久久a久久综合婷婷| 激情文学综合丁香| 国产精品高潮呻吟| 欧美激情精品久久久久久蜜臀| 久久人人97超碰精品888| 亚洲欧美日韩中文在线制服| 欧美激情一二三区| 欧美成人在线免费观看| 亚洲美女精品一区| 日韩手机在线导航| 亚洲精品一区在线观看| 欧美在线二区| 欧美中文字幕视频| 欧美在线免费| 亚洲巨乳在线| 欧美高清视频在线观看| 在线视频观看日韩| 亚洲人人精品| 久久美女性网| 欧美亚洲在线视频| 久久久福利视频| 久久久国产午夜精品| 国产精品国产三级国产普通话99| 最新中文字幕亚洲| 欧美韩日精品| 麻豆精品国产91久久久久久| 欧美国产日韩二区| 亚洲二区精品| 久久综合电影| 久久成人精品电影| 美女尤物久久精品| 在线观看日韩av电影| 亚洲精品欧洲| 亚洲免费人成在线视频观看| 欧美日韩精品免费| 欧美三级精品| 国产欧美日韩综合| 亚洲丰满少妇videoshd| 久久久午夜电影| 久久久91精品国产一区二区三区| 国产亚洲精品自拍| 国产亚洲激情在线| 久久久女女女女999久久| 亚洲欧美中文在线视频| 国产精品视频xxx| 亚洲丶国产丶欧美一区二区三区| 久久人人97超碰精品888 | 亚洲欧美日韩在线| 国产美女精品视频| 日韩午夜电影| 99综合在线| 巨胸喷奶水www久久久免费动漫| 激情欧美一区二区| 亚洲福利在线看| 欧美一二三视频| 激情婷婷久久| 日韩视频免费观看高清完整版| 国产精品一二| 免费亚洲视频| 亚洲欧美国产日韩中文字幕| 久久这里有精品15一区二区三区| 亚洲经典三级| 蜜桃av一区二区| 欧美极品欧美精品欧美视频| 国内外成人免费激情在线视频网站| 亚洲网站在线播放| 欧美高清视频在线观看| aa国产精品| 国内精品久久久久影院 日本资源| 欧美黑人在线观看| 国产精品日本欧美一区二区三区| 蜜月aⅴ免费一区二区三区| 欧美—级在线免费片| 欧美一区免费视频| 欧美另类专区| 欧美**人妖| 久久米奇亚洲| 亚洲一区二区成人在线观看| 久久精品国产99国产精品澳门| 99国产精品国产精品久久| 先锋影音久久| 国产一区二区视频在线观看| 最新日韩在线| 精品二区视频| 午夜精品视频| 亚洲欧洲av一区二区| 欧美风情在线| 欧美大片免费观看| 狠狠色综合网| 亚洲国产欧美一区二区三区同亚洲| 久久gogo国模啪啪人体图| 国产视频在线一区二区 | 亚洲精品国精品久久99热| 欧美激情亚洲综合一区| 久久久久久久尹人综合网亚洲| 欧美视频第二页| 亚洲精品在线视频观看| 亚洲精品国久久99热| 久久久人成影片一区二区三区观看| 欧美亚洲日本国产| 久久永久免费| 久久久人成影片一区二区三区观看| 国产精品日韩精品| 亚洲一区国产| 亚洲电影免费观看高清| 久久aⅴ国产欧美74aaa| 久久精品成人| 国模精品娜娜一二三区| 欧美在线视频一区| 免费av成人在线| 亚洲电影专区| 欧美黄在线观看| 日韩一区二区久久| 亚洲一区精品在线| 国产麻豆精品在线观看| 午夜精品亚洲| 美女91精品| 最新国产成人av网站网址麻豆| 噜噜噜在线观看免费视频日韩| 亚洲国产成人高清精品| 日韩视频不卡中文| 国产精品毛片va一区二区三区| 午夜久久久久久| 麻豆91精品| 国产精品欧美日韩久久| 亚洲欧美国产精品va在线观看| 久久久www成人免费无遮挡大片| 精品粉嫩aⅴ一区二区三区四区| 老**午夜毛片一区二区三区| 亚洲韩国精品一区| 亚洲一区黄色| 极品av少妇一区二区| 欧美精品123区| 久久久久久香蕉网| 亚洲黄色尤物视频| 国产精品激情av在线播放| 欧美在线|欧美| 91久久精品一区二区三区| 亚洲一区免费看| 1024精品一区二区三区| 欧美涩涩视频| 老牛影视一区二区三区| 一区二区三区视频在线播放| 久久先锋影音av| 亚洲男同1069视频| 亚洲第一区中文99精品| 国产精品男女猛烈高潮激情 | 久久一区二区三区av| 亚洲精品少妇30p| 国产精品视频在线观看| 欧美大香线蕉线伊人久久国产精品| 亚洲伊人观看| 亚洲福利视频专区| 久久精品视频在线看| 中文成人激情娱乐网| 在线观看一区欧美| 国产精品影音先锋| 欧美日本韩国| 久久伊人免费视频| 午夜国产欧美理论在线播放 | 亚洲一区二区三区视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99精品欧美一区| 尤妮丝一区二区裸体视频| 国产欧美一区二区精品性色| 欧美日韩亚洲国产精品| 亚洲日本成人| 玖玖综合伊人| 久久久91精品国产| 欧美亚洲视频一区二区| 亚洲一卡二卡三卡四卡五卡| 亚洲激情在线播放|