什么是BITS数据类型的HEX STRING表示?

时间:2014-08-20 11:53:21

标签: string hex byte snmp data-conversion

如何将 BITS 数据类型转换为 HEX STRING 数据类型? (如0x80HEX STRING分别代表(0),(1),(2)BITS是什么? DEFVAL是'00'h

Composed Type: Bits
Base Type: BITS

Value List: 
large (0)
mid-size (1)
compact (2)

2 个答案:

答案 0 :(得分:1)

您可能在" snmpset"的手册页上找到了十六进制和Bits数据的正确语法: http://www.net-snmp.org/docs/man/snmpset.html

因此,将Bits值设置为大(0)与语法

类似
snmpset <flags,host etc> <oid> b 0

要设置多个标志,例如mid-size和compact,请使用

snmpset <flags,host etc> <oid> b 1,2

我认为后一种语法没有详细记录。我在net-snmp的邮件列表档案中找到了它。

就像我在评论中写的那样,没有&#34; HEX STRING&#34; SNMP中的数据类型。如果要传输二进制数据,例如OCTET STRING值,则需要在命令行上以某种方式表示它。 Net-snmp提供了一种名为&#34; HEX STRING&#34;的输入格式。它将使用以下语法接受十六进制输入:

snmpset <flags,host etc> <oid> x 60

顺便提一下,&#34; 60&#34;十六进制与SNMP编码方式相同&#34;位1,2和#34; (第二和第三位,MSB优先)。

有关SNMP如何编码和解码BITS值的说明,请参阅RFC1906第8节。有了这些知识,您只需要了解十六进制转换的工作原理,这很容易获取。

编辑:我想这就是您正在寻找的内容:

0 -> 0x80
1 -> 0x40
2 -> 0x20

与普通(LSB)字节编码相比,这有点倒退,但再次阅读RFC1906以了解其工作原理。

应该注意的是,如果尝试在BITS变量上设置OCTET STRING值,则可能需要SNMP代理返回类型错误。但是,由于BITS只是一个基于OCTET STRING类型的SMI宏,因此实际上它们的编码方式相同。因此,代理商应该乐意设置价值。

答案 1 :(得分:1)

使用Net-SNMP时,您无需计算位值,只需编写即可设置一个或多个位:

snmpset -v2c -c public 192.168.100.1   $ObjectId   = "medium compact"
相关问题