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

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>
            欧美日韩午夜在线视频| 在线一区欧美| 午夜一级久久| 亚洲一区二区三区高清不卡| 99视频精品在线| 在线天堂一区av电影| 亚洲一级黄色av| 欧美一级大片在线免费观看| 久久精品国产2020观看福利| 老鸭窝毛片一区二区三区| 免费成人激情视频| 亚洲激情成人网| av72成人在线| 午夜精品久久久久久久久久久久久| 亚洲欧美久久久久一区二区三区| 欧美在线3区| 欧美成人国产va精品日本一级| 欧美精品日韩一区| 国产日产亚洲精品| 亚洲黄网站在线观看| 亚洲视频在线观看免费| 久久国产精品久久国产精品| 快播亚洲色图| 亚洲人在线视频| 亚洲欧美一区二区精品久久久| 久久精品国产一区二区电影| 欧美人成在线视频| 国产日韩欧美不卡| 亚洲视频网在线直播| 久久亚洲高清| 亚洲神马久久| 欧美成人影音| 国语自产精品视频在线看抢先版结局| 亚洲精品乱码久久久久久蜜桃91 | 欧美国产精品va在线观看| 亚洲人成在线观看网站高清| 欧美一区二区免费| 欧美日韩免费一区| 亚洲高清久久网| 欧美在线高清视频| 99成人免费视频| 免费成人av在线| 国模精品一区二区三区色天香| 在线视频日韩精品| 亚洲国产成人精品久久| 久久精品国产免费看久久精品| 国产精品久久| 一区二区三区日韩| 91久久精品国产91久久性色| 久久精品综合| 国内精品视频在线播放| 午夜在线视频一区二区区别| 一区二区三区欧美在线观看| 欧美精品xxxxbbbb| 日韩视频不卡| 亚洲美女中文字幕| 国产精品igao视频网网址不卡日韩 | 亚洲电影欧美电影有声小说| 久久精品一区蜜桃臀影院| 国产女人18毛片水18精品| 先锋资源久久| 亚洲免费视频中文字幕| 国产欧美日韩麻豆91| 性感少妇一区| 午夜在线观看免费一区| 国产视频在线观看一区二区三区| 午夜久久电影网| 亚洲免费视频一区二区| 国产亚洲欧美日韩日本| 久久久久久久久久久久久9999| 先锋资源久久| 狠狠色综合色区| 欧美韩日精品| 欧美日韩日本国产亚洲在线| 亚洲影视在线播放| 亚洲欧美在线一区二区| 黄色一区二区在线观看| 国内精品美女在线观看| 亚洲丰满在线| 亚洲人成亚洲人成在线观看| 欧美色中文字幕| 性色av一区二区三区| 久久国产一区| 亚洲免费高清| 亚洲欧美日韩系列| 激情六月婷婷久久| 91久久精品国产| 国产欧美日韩伦理| 亚洲第一天堂av| 国产精品日本精品| 欧美成人免费全部| 国产精品免费电影| 欧美gay视频| 国产精品国产三级国产专播精品人 | 国产伦精品一区| 美玉足脚交一区二区三区图片| 欧美黄色片免费观看| 欧美一区二区在线看| 免费在线成人av| 午夜精品福利视频| 欧美成人按摩| 久久精品国产亚洲精品| 欧美激情一区三区| 久久久久久香蕉网| 国产精品yjizz| 免播放器亚洲一区| 国产精品午夜电影| 亚洲激情图片小说视频| 国产伦精品一区二区三区视频黑人 | 亚洲性感激情| 久久一区二区精品| 欧美一区二区三区四区在线观看地址| 久久午夜国产精品| 欧美伊人影院| 国产精品国产三级国产aⅴ浪潮 | 久久精品网址| 亚洲在线成人精品| 欧美插天视频在线播放| 久久久国产精品一区二区三区| 欧美日韩一卡二卡| 欧美搞黄网站| 在线观看不卡| 欧美中文在线观看| 欧美一区在线看| 国产精品日韩在线观看| 一本色道久久综合亚洲91| 亚洲国产精品久久久久婷婷老年| 久久国产天堂福利天堂| 久久久夜夜夜| 激情久久中文字幕| 久久全国免费视频| 免费成人毛片| 亚洲黄色成人久久久| 老**午夜毛片一区二区三区| 老司机免费视频久久| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一级播放| 久久亚洲综合色| 伊人久久综合97精品| 久久精品国产第一区二区三区| 久久精品国产69国产精品亚洲| 欧美在线视频一区二区| 国产视频一区三区| 久久精品国产欧美亚洲人人爽| 久久久久久久综合色一本| 国产色视频一区| 久久天堂av综合合色| 欧美激情精品久久久久久大尺度| 亚洲国产日韩一区| 欧美日本国产精品| 亚洲天堂av在线免费观看| 欧美在线免费观看视频| 精品成人免费| 欧美精品国产精品| 亚洲视频自拍偷拍| 久久一区二区三区四区五区| 亚洲精品人人| 国产精品久久久久免费a∨| 午夜久久电影网| 欧美大片专区| 亚洲免费伊人电影在线观看av| 国产精品三级视频| 久久久久九九九| 亚洲免费久久| 久久久精品性| 亚洲精品一区二区三区av| 国产精品v片在线观看不卡| 欧美一级在线播放| 亚洲激情av在线| 欧美一区二区三区在线看| 亚洲黄色成人网| 国产欧美一二三区| 欧美成人免费在线观看| 中文国产亚洲喷潮| 欧美国产日本高清在线| 午夜精品影院| 日韩午夜激情| 影院欧美亚洲| 国产精品一区二区三区四区五区| 久久偷看各类wc女厕嘘嘘偷窃| 一区二区三区成人精品| 欧美高清hd18日本| 久久国产高清| 在线一区二区三区四区| 在线观看成人网| 国产欧美日韩综合精品二区| 欧美经典一区二区三区| 久久九九99| 亚洲女女女同性video| 亚洲国内自拍| 女同一区二区| 久久国产视频网站| 亚洲在线中文字幕| 夜夜嗨av一区二区三区免费区| 国一区二区在线观看| 国产精品久久97| 欧美日韩精品免费观看视频| 女女同性女同一区二区三区91| 欧美在线国产| 午夜在线视频观看日韩17c|