pyasn1 prettyPrint() - отображать целые числа в шестнадцатеричном виде
У меня есть много univ.Integer(), но я хотел бы напечатать все из них в шестнадцатеричном виде, которые легко связаны с декодированием подложки.
Как мне это сделать?
один такой пример
namedtype.NamedType('vendor-id', univ.Integer())
namedtype.NamedType('device-id', univ.Integer())
namedtype.NamedType('subven-id', univ.Integer())
namedtype.NamedType('subsys-id', univ.Integer())
какие-либо параметры для красивой печати, которые будут конвертировать все целые числа в шестнадцатеричные? или подсчитать Univ.Integer для некоторых трюков отображения?
1 ответ
Решение
Там нет возможности prettyPrint
как это. Я могу предложить вам две мысли.
Если вам нужно красиво печатать определенные целые числа, а не целое дерево составных объектов со встроенными целыми числами, вы можете просто использовать hex()
:
>>> Integer(123).prettyPrint()
'123'
>>> hex(int(Integer(123)))
'0x7b'
В противном случае вы могли бы изменить pyasn1 Integer.prettyOut()
метод как это:
>>> class MyInteger(Integer):
... def prettyOut(self, value):
... return hex(value)
...
>>> MyInteger(123).prettyPrint()
'0x7b'
>>>