Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2016 19:32:29

xsloneeekx
Зарегистрирован: 2016-01-09
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование 16-ричной строки в двоичное с сохранением нулей

Всем доброго времени суток.

Задача такова.

С помощью PySNMP от коммутатора (конкретно - D-Link DES/DGS series) получаю строку в шестнадцатиричном виде, которую для дальнейшей обработки надо перевести в двоичный вид, сохранив все дополняющие нули - т.е. 0x0001 в двоичном виде так бы и был 0b0001.

На всякий случай скажу, почему сохранение нулей критично - в этой строке закодирована информация о принадлежности порта определенному VLANy, где состояние каждого порта определяется конкретным битом. И если первые несколько портов не принадлежат данному влану, то в тех местах остаются нули, которые при переводе в разную форму с помощью bin(),hex() и пр. теряются. Перевод в строку и применение format() не помогает, т.к. строка может быть произвольной длины.

Есть подозрение, что решение где-то на поверхности, но я никак не могу додуматься.
Версия Python - 3.4.3
Кто поможет, да прибудет с тем Сила!

Офлайн

#2 Янв. 25, 2016 20:04:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Преобразование 16-ричной строки в двоичное с сохранением нулей

xsloneeekx
т.е. 0x0001 в двоичном виде так бы и был 0b0001
Вообще-то, один байт кодируется восемью битами, а не одним.
0x0001 == 0b0000000000000001

Непонятно только, зачем полученную строку переводить в двоичный вид. Обычно маска применяется на нужный бит.



Офлайн

#3 Янв. 25, 2016 20:27:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Преобразование 16-ричной строки в двоичное с сохранением нулей

py.user.next
обычно маска применяется на нужный бит.
>>> a=0xffe
>>> bin(a)
'0b111111111110'
>>> a & 0x1
0
>>> a & 0b010
2



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version