关于十六进制数

时间:2015-10-06 10:23:28

标签: python snmp pysnmp

我使用以下命令发送了snmptrap

  

sudo snmptrap -v2c -c public''。1.1.2.3.5.6.7.8.9 ifIndex   i 2 ifAdminStatus i 1 1.3.6.1.4.1.9.9.599.1.3.1.1.1.0 x   “0x34e2fd600a84”

我使用prettyPrint()来格式化var绑定中的输出值。问题是输出不包含前导零。所以结果输出类似于

  

so.org.dod.internet.private.enterprises 9.9.599.1.3.1.1.1.0 =   0x34e2fd60a84

结果输出比原始输入少一个0。这是prettyPrint中的错误还是我错过了什么?

修改

这是我的实施。在这个回调函数里面

# Callback function for receiving notifications
def cbFun(snmpEngine, stateReference, contextEngineId, contextName,varBinds, cbCtx):

我有这样的代码块:

for name, val in varBinds:
        oid, label, suffix = MIBView.getNodeName(name)
        oidLabel = ".".join(map(str, label))
        oidSuffix = ".".join(map(str, suffix))
        oid_string = oid.prettyPrint()
        value = val.prettyPrint()

部分value = val.prettyPrint()返回十六进制值,从两个连续的0模式中删除一个0。因此,如果使用打印值打印值,我会得到 0x34e2fd60a84 。但我会除了 0x34e2fd600a84

1 个答案:

答案 0 :(得分:1)

这是pyasn1中的一个错误,它在版本0.1.3中修复(当前版本为0.1.9)。如果由于某种原因无法升级,则需要升级pyasn1或monkey-patch。