Python中读取最低有效位

3
我需要在Python中解析syslog消息的Facility和Severity。这些值作为单个整数与每条消息一起传递。事件的严重程度是0-7,在整数的3个最低有效位中指定。评估数字中的这3个位的最简单/最快方法是什么?
我现在拥有的代码只是进行了一个3位右移,然后将该数字乘以8,并从原始数字中减去结果。
FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)

应该有一种更简单的方法来完成这个操作,而不是清除掉一些位,并进行减法计算。

4个回答

9
SEV = PRI & 7
FAC = PRI >> 3

像这样。


4

只需应用位掩码:

sev = int(pri) & 0x07

(0x07是00000111)


1

请尝试以下操作

result = FAC & 0x7

6
在Python 3中(也许在2.6/2.7中也可以),你甚至可以使用二进制字面量,这使那些难以记忆(二的次幂减1)的人非常清楚明白:0b111 - user395760

0
通常提取最低有效位的方法是使用适当的掩码(在本例中为7)进行按位与运算。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接