Форум сайта python.su
0
Всем доброго времени суток.
Задача такова.
С помощью PySNMP от коммутатора (конкретно - D-Link DES/DGS series) получаю строку в шестнадцатиричном виде, которую для дальнейшей обработки надо перевести в двоичный вид, сохранив все дополняющие нули - т.е. 0x0001 в двоичном виде так бы и был 0b0001.
На всякий случай скажу, почему сохранение нулей критично - в этой строке закодирована информация о принадлежности порта определенному VLANy, где состояние каждого порта определяется конкретным битом. И если первые несколько портов не принадлежат данному влану, то в тех местах остаются нули, которые при переводе в разную форму с помощью bin(),hex() и пр. теряются. Перевод в строку и применение format() не помогает, т.к. строка может быть произвольной длины.
Есть подозрение, что решение где-то на поверхности, но я никак не могу додуматься.
Версия Python - 3.4.3
Кто поможет, да прибудет с тем Сила!
Офлайн
857
xsloneeekxВообще-то, один байт кодируется восемью битами, а не одним.
т.е. 0x0001 в двоичном виде так бы и был 0b0001
Офлайн
253
py.user.next
обычно маска применяется на нужный бит.
>>> a=0xffe >>> bin(a) '0b111111111110' >>> a & 0x1 0 >>> a & 0b010 2
Офлайн