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'
>>> 
Другие вопросы по тегам