检查字节是否设置了多个位

时间:2015-02-03 16:24:40

标签: c# bit-manipulation byte

当我在C#应用程序中发送查询时,我收到了来自串行设备的3字节消息。整个消息最多应设置一个比特,例如$04 00 00没问题,但不是$04 01 00$05 00 00

位移和检查每个位是一个解决方案,但也许有更优雅的东西?我们可以检查每个字节以查看它是否是2的幂,但是我无法想出一种看起来更好的方法(在这些情况下也不确定效率)。

作为问题的扩展,我需要将每个可能的值与输出消息匹配,例如:
$01 00 00: Button A pressed
$00 02 00: Lever B pulled
$00 00 04: Switch C activated

案例陈述是一个简单的解决方案,但又一次,想知道是否还有一种非常好的方法。

1 个答案:

答案 0 :(得分:6)

有一个聪明的技巧可以检查字节是否有更多的一位设置。 n & (n - 1) != 0