检查字节是否设置了多于一位

Check if byte has more than one bit set

当我在 C# 应用程序中向串行设备发送查询时,我收到了一条从串行设备返回的 3 字节消息。整个消息最多应设置一位,例如 00 00 可以,但 01 00 00 00 不行。

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

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

case 语句是一个简单的解决方案,但再次想知道是否也有一种很好的方法来做到这一点。

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