我的 OID 为 1.3.6.1.2.1.2.2.1.8.4096 (ifOperStatus)
在我的代码中,我有:
MIB[0]=0x2b
MIB[1]=0x06
MIB[2]=0x01
MIB[3]=0x02
MIB[4]=0x01
MIB[5]=0x02
MIB[6]=0x02
MIB[7]=0x01
MIB[8]=0x08
MIB[9]=0xA0
MIB[10]=0x00
其中 A0 00 表示 4096。
十六进制中的 4096 是 1000。将其分成 2 个字节会给我 10 00。SNMP 数据应该以单字节格式发送。因此,对于大数字需要一个特殊的规则,因为一个字节(八位)只能表示 0-255 之间的数字。规则是将最高位用作标志,让接收者知道这个数字跨越一个字节以上。
我已将这些位向左移动并将 1 添加到第 8 位。
左移:20 00
位 8 变为 1:A0 00
参考:【OID 编码】(http://www.rane.com/note161.html)
我是否正确编码了 4096?
将数据字符串解码为原始 OID 怎么样?
示例将有助于我理解这个概念。