C位域位顺序问题

问题描述

我正在尝试建立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 (将#修改为@)