在 Python 中读取最低有效位
Posted
技术标签:
【中文标题】在 Python 中读取最低有效位【英文标题】:Reading least significant bits in Python 【发布时间】:2011-01-27 21:33:49 【问题描述】:我必须在 Python 中解析系统日志消息的功能和严重性。这些值以单个整数的形式随每条消息一起提供。事件的严重性为 0-7,在整数中的 3 个最低有效位中指定。从数字中评估这 3 位的最简单/最快的方法是什么?
我现在的代码只是进行 3 位右移,然后将该数字乘以 8,然后从原始代码中减去结果。
FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)
必须有一种不那么复杂的方法来做到这一点——而不是消除比特,然后减去。
【问题讨论】:
【参考方案1】:SEV = PRI & 7
FAC = PRI >> 3
这样。
【讨论】:
【参考方案2】:只需应用位掩码:
sev = int(pri) & 0x07
(0x07 是 00000111)
【讨论】:
【参考方案3】:试试下面的
result = FAC & 0x7
【讨论】:
在 Python 3 中(也许在 2.6/2.7 中?),您甚至可以使用二进制文字,使其对那些记忆困难的人非常显而易见(2 的幂)- 1:0b111
.【参考方案4】:
提取最低有效位的正常方法是使用适当的掩码(在本例中为 7)进行按位与操作
【讨论】:
以上是关于在 Python 中读取最低有效位的主要内容,如果未能解决你的问题,请参考以下文章
在 C/C++ 中检查最低有效位 (LSB) 和最高有效位 (MSB) 的值