2017-04-03 59 views
0

我有許多univ.Integer(),但希望以十六進制打印所有這些,這很容易與基板的解碼有關。pyasn1 prettyPrint() - 以十六進制顯示整數

我該怎麼辦?

這樣的一個例子是

namedtype.NamedType('vendor-id', univ.Integer()) 
namedtype.NamedType('device-id', univ.Integer()) 
namedtype.NamedType('subven-id', univ.Integer()) 
namedtype.NamedType('subsys-id', univ.Integer()) 

到相當的打印任何選項,這將轉換所有整數爲十六進制?或subcalss univ.Integer的一些顯示技巧?

回答

0

沒有選項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' 
>>>