繁体   English   中英

如何将两位加到十六进制中

[英]how to add two bits into a hex

我有两个字节,并且我设置了不同的位以获取不同的组合。 例如,字节1的第7位和字节2的第1位,第2位使组合设备就绪。 现在,我创建了面具

#define C1_device_ready   (0x80 | 0x100 | 0x200)

然后,我读取了数据并尝试进行比较。 我可以做1个字节(data [0]&mask == mask)。 但是,如何为有两个字节的data_0和data [1]的C1_device_ready掩码计算它。 是否容易做到?还是只应在单个字节中进行屏蔽? :: added :: data是未签名的char数据[2]

如果data是一个unsigned char数组,则可以测试

if ((data[0] & mask) == (mask & 0xFF) && (data[1] & mask) == ((mask >> 8) & 0xFF))

或合并两个data[i]并检查

if (((data[0] | (data[1] << 8)) & mask) == mask)

采用

if (((data[0] | (data[1] << 8)) & mask) == mask) {
    // do something
}
((data[0] | (data[1]<<8)) & mask) == mask

应该管用。 可能需要将事物强制转换为unsigned int

尝试:

if ((*(short *)data) & C1_device_ready)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM