在 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) 的值

最高有效位基数排序如何比最低有效位基数排序更有效?

如何在Scala中替换缓冲图像中的最低有效位

如何在 int 中找到最低有效位 (LSB) 的位置? C++

在 C++ 中将最低有效位从 int 复制到 long

大端序和小端序,最高有效位和最低有效位