Найти - Пользователи
Полная версия: Преобразование 16-ричной строки в двоичное с сохранением нулей
Начало » Python для новичков » Преобразование 16-ричной строки в двоичное с сохранением нулей
1
xsloneeekx
Всем доброго времени суток.

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

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

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

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

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

Непонятно только, зачем полученную строку переводить в двоичный вид. Обычно маска применяется на нужный бит.
doza_and
py.user.next
обычно маска применяется на нужный бит.
>>> a=0xffe
>>> bin(a)
'0b111111111110'
>>> a & 0x1
0
>>> a & 0b010
2
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB