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

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 閱讀(795) 評論(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>
            欧美日韩免费观看一区二区三区 | 亚洲线精品一区二区三区八戒| 久久综合亚洲社区| 久久超碰97人人做人人爱| 欧美在线国产精品| 久久久国产成人精品| 美女视频网站黄色亚洲| 欧美激情片在线观看| 亚洲黄色毛片| 亚洲精品视频二区| 在线视频欧美日韩精品| 欧美一区二区视频免费观看| 久久综合色婷婷| 欧美国产三区| 欧美亚洲不卡| 在线视频成人| 亚洲一区二区在线播放| 久久美女性网| 亚洲美女在线看| 欧美一区视频在线| 久久亚洲精选| 国产精品狼人久久影院观看方式| 国产一区二区精品久久| 在线视频日韩| 欧美成人免费在线观看| 这里只有精品电影| 久久久午夜精品| 欧美性生交xxxxx久久久| 精品999网站| 亚洲综合色网站| 能在线观看的日韩av| 亚洲一区二区三区四区五区午夜| 久久亚洲午夜电影| 国产日韩在线播放| 亚洲性色视频| 亚洲高清视频一区二区| 欧美一区二区网站| 欧美色精品在线视频| 亚洲视频一区在线观看| 久久夜色精品国产| 国产亚洲午夜| 欧美一级大片在线观看| 亚洲国产精品久久久久婷婷老年| 欧美一区二区私人影院日本| 欧美四级在线| 99热精品在线| 亚洲高清激情| 欧美成人久久| 黄色欧美成人| 麻豆国产va免费精品高清在线| 亚洲男人第一网站| 欧美色偷偷大香| 亚洲社区在线观看| 亚洲人成久久| 欧美精品videossex性护士| 在线观看亚洲视频| 久久久久se| 欧美一区二区在线视频| 国产日韩欧美| 久久久青草青青国产亚洲免观| 亚洲一区在线播放| 国产精品久久久久久久午夜片| 一区二区三区四区国产| 亚洲欧洲精品一区二区三区不卡 | 亚洲电影有码| 欧美激情视频网站| 亚洲理论在线| 亚洲欧洲精品成人久久奇米网| 欧美精选在线| 亚洲自拍偷拍一区| 欧美一区1区三区3区公司| 韩国欧美一区| 亚洲第一区色| 欧美性大战久久久久| 欧美亚洲一区三区| 久久乐国产精品| 99热这里只有精品8| 亚洲无线一线二线三线区别av| 国产精品自拍网站| 欧美高清不卡| 欧美网站在线| 久久精品国产亚洲a| 模特精品裸拍一区| 亚洲午夜一区二区三区| 午夜国产精品视频| 亚洲精品1区2区| 99爱精品视频| 国内精品伊人久久久久av影院| 老色鬼久久亚洲一区二区| 欧美黄色精品| 久久国产毛片| 免费中文日韩| 久久久久久综合| 欧美日韩国产91| 久久午夜色播影院免费高清| 欧美国产日韩精品免费观看| 午夜久久影院| 免费人成网站在线观看欧美高清 | 欧美视频中文一区二区三区在线观看 | 亚洲婷婷在线| 亚洲国产高清视频| 亚洲香蕉网站| 亚洲国产一区在线观看| 亚洲免费伊人电影在线观看av| 国产一区二区三区无遮挡| 亚洲精品欧美日韩专区| 国产亚洲va综合人人澡精品| 欧美高清视频www夜色资源网| 国产精品福利av| 免费欧美网站| 国产日韩精品一区二区三区| 欧美激情亚洲另类| 国产一区二区三区在线观看免费视频| 亚洲高清视频在线| 国产一区二区三区四区老人| 日韩一二三区视频| 亚洲人午夜精品| 久久超碰97中文字幕| 午夜免费在线观看精品视频| 欧美人与性禽动交情品| 欧美激情免费在线| 精品不卡在线| 午夜精品福利视频| 亚洲欧美国产精品专区久久| 女女同性女同一区二区三区91| 久久久99精品免费观看不卡| 国产精品久久九九| 正在播放欧美视频| 亚洲欧美日韩系列| 国产精品久久久久av免费| 日韩视频精品| 一区二区三区国产在线观看| 免费欧美日韩| 欧美电影美腿模特1979在线看| 黄色成人av| 久久亚洲精选| 欧美激情免费在线| 亚洲丁香婷深爱综合| 久久久免费精品视频| 理论片一区二区在线| 一区二区三区在线视频免费观看 | 欧美α欧美αv大片| 免费日韩成人| 亚洲大片av| 欧美高清不卡| 亚洲美女啪啪| 亚洲一区图片| 国产精品午夜视频| 久久9热精品视频| 六月婷婷一区| 亚洲欧洲一区二区三区| 欧美日韩国产123区| 亚洲私人影吧| 久久久一二三| 亚洲国产一区二区三区高清| 欧美日本二区| 久久精品视频播放| 影视先锋久久| 欧美激情视频在线播放| 一本大道久久a久久精二百| 亚洲欧美日韩精品在线| 国模精品一区二区三区色天香| 欧美在线视屏| 亚洲大胆美女视频| 一区二区三区久久| 国产日韩一级二级三级| 欧美韩日一区二区三区| 亚洲一区bb| 欧美成人午夜激情| 亚洲午夜久久久久久尤物 | 亚洲先锋成人| 国产一区日韩欧美| 欧美精品激情在线观看| 亚洲欧美国产不卡| 亚洲国产欧洲综合997久久| 午夜欧美不卡精品aaaaa| 伊人成人网在线看| 欧美色另类天堂2015| 久久蜜桃精品| 亚洲欧美国产va在线影院| 亚洲电影免费观看高清完整版在线观看 | 在线观看成人av| 欧美日韩综合视频网址| 久久精品国产99国产精品澳门| 亚洲国产成人久久| 久久久久国内| 亚洲女人天堂成人av在线| 亚洲黄色影院| 国产日韩精品一区二区三区| 欧美国产91| 久久影视三级福利片| 午夜日韩av| 亚洲视频在线二区| 亚洲伦理在线| 欧美国产精品人人做人人爱| 欧美中文在线免费| 亚洲少妇最新在线视频| 亚洲精品日韩激情在线电影| 一色屋精品视频在线看| 国产一区二区三区精品久久久|