我必须在 Python 中解析 syslog 消息的 Facility 和 Severity。这些值以单个整数的形式随每条消息一起提供。事件的严重性为 0-7,在整数中的 3 个最低有效位中指定。从数字中评估这 3 位的最简单/最快的方法是什么?
我现在拥有的代码只是进行 3 位右移,然后将该数字乘以 8,然后从原始代码中减去结果。
FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)
必须有一种不那么复杂的方法来做到这一点——而不是清除位,然后减去。
我必须在 Python 中解析 syslog 消息的 Facility 和 Severity。这些值以单个整数的形式随每条消息一起提供。事件的严重性为 0-7,在整数中的 3 个最低有效位中指定。从数字中评估这 3 位的最简单/最快的方法是什么?
我现在拥有的代码只是进行 3 位右移,然后将该数字乘以 8,然后从原始代码中减去结果。
FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)
必须有一种不那么复杂的方法来做到这一点——而不是清除位,然后减去。
SEV = PRI & 7
FAC = PRI >> 3
Like that.
Just apply a bit mask:
sev = int(pri) & 0x07
(0x07 is 00000111)
尝试以下
result = FAC & 0x7
The normal way to extract the least significant bits would be to do a bitwise AND with the appropriate mask (7 in this case)