我有两个字节,我设置不同的位,以获得不同的组合。 例如,字节1的位7和字节2的位1,位2使组合设备就绪。 现在,我已经创建了面具如何将两位添加到十六进制
#define C1_device_ready (0x80 | 0x100 | 0x200)
然后我读的数据,并尝试比较。 1字节我可以做(数据[0] &掩码==掩码)。 但是我怎样才能计算它有两个字节,数据[0] 和数据[1]的C1_device_ready掩码。 它很容易或我应该只在单个字节掩盖。 ::加入::数据是无符号字符数据[2]
感谢的作品。你能否解释一下这种转变(<< 8)。 – user1566277 2012-08-10 12:19:56
'data [0] | (data [1] << 8)'将来自'data'数组的两个字节组合到一个'int'中,在最低有效字节中有'data [0]',每个班次的最低有效字节。由于位操作'''和'|'自动进行整数提升,所以不需要手动将一个转换插入到较大的类型。 – 2012-08-10 12:27:36
这解释得很好。非常感谢这样一个明确的答案。 – user1566277 2012-08-10 12:40:31