问题描述
我正在尝试建立DNS查询的位域标志,但我对我打印出的比特顺序(作为测试我的DNS标头的方式)有点困惑。
所以我对DNSHeader的结构如下:
typedef struct HEADER
{
....etc
unsigned char QR :1;
unsigned char OpCode :4;
unsigned char AA :1;
unsigned char TC :1;
unsigned char RD :1;
.....etc etc
} DNSHeader ;
因此,如您所见,所有这些标志加在一起应该恰好占1个字节。 RD应该是字节的最后一位。
但是,当我将RD设置为1且rest = 0时,我去打印了字节,得到的是:十六进制为“ 80”,二进制为10000000。我进行了一些进一步的实验,并将RD和QA都设置为1,然后得到“ 81”,即10000001,因此这意味着位的顺序完全相反。但是,如果您看一下该结构的声明,我没想到这些位的相反。这是怎么回事?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)