3

我必须在 Python 中解析 syslog 消息的 Facility 和 Severity。这些值以单个整数的形式随每条消息一起提供。事件的严重性为 0-7,在整数中的 3 个最低有效位中指定。从数字中评估这 3 位的最简单/最快的方法是什么?

我现在拥有的代码只是进行 3 位右移,然后将该数字乘以 8,然后从原始代码中减去结果。

FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)

必须有一种不那么复杂的方法来做到这一点——而不是清除位,然后减去。

4

4 回答 4

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

Like that.

于 2011-01-27T21:38:17.563 回答
4

Just apply a bit mask:

sev = int(pri) & 0x07

(0x07 is 00000111)

于 2011-01-27T21:39:00.953 回答
1

尝试以下

result = FAC & 0x7
于 2011-01-27T21:37:58.703 回答
0

The normal way to extract the least significant bits would be to do a bitwise AND with the appropriate mask (7 in this case)

于 2011-01-27T21:38:25.837 回答