微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C位域位顺序问题

如何解决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 举报,一经查实,本站将立刻删除。