2011-01-27 2 views
2

Мне нужно проанализировать механизм и серьезность сообщений syslog в Python. Эти значения приходят с каждым сообщением как одно целое. Степень тяжести события 0-7, указанная в 3 младших значащих битах целого числа. Каков самый простой/быстрый способ оценить эти 3 бита из числа?Чтение наименее значимых бит в Python

Код, который у меня есть сейчас, просто имеет 3-битный сдвиг вправо, чем умножает это число раз 8 и вычитает результат из оригинала.

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

Там должен быть менее запутанным способом сделать this-, а не уничтожить биты и вычитание.

(Я системным администратором по торговле так, я не знаю, что многие из ОСНОВЫ пожалуйста, голые со мной!)

ответ

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

Как и что.

1

Попробуйте следующее

result = FAC & 0x7 
+5

В Python 3 (и, возможно, в версии 2.6/2.7?) Вы можете даже использовать двоичный литерал, который делает его очень очевидным для тех, у кого проблемы с запоминанием (полномочия двух) - 1: '0b111'. – delnan

0

Обычный способ извлечения наименее значащих битов будет делать побитовое И с соответствующей маской (7 в данном случае)

3

Просто нанесите немного маску:

sev = int(pri) & 0x07 

(0x07 является 00000111)

Смежные вопросы