【问题标题】:What is HEX STRING representation of BITS datatype?什么是 BITS 数据类型的 HEX STRING 表示?
【发布时间】:2014-10-13 18:28:45
【问题描述】:

如何将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)

【问题讨论】:

  • 我猜这不是一个真正的 SNMP 问题。只是做数学。需要注意的是,SNMP 协议规范中没有“HEX STRING”数据类型。也许这与 net-snmp 命令的输出/输入格式有关,就像 Lex Li 的评论所暗示的那样。
  • 您说的是 net-snmp 命令套件吗? SNMP 是一种网络协议,没有“输入格式”。
  • 抱歉,我不清楚。如果你觉得没有必要澄清到足以让人们回答,那么我猜你并不是那么热衷于得到答案,是吗?如果问题确实涉及 net-snmp 命令行工具,那么我有一个答案。但如果问题是关于其他工具的,我不想发布它,因为这将是错误的答案。
  • 如果我发布了错误的答案,你会否决它而不接受它。这是有道理的,因为这不是一个正确的答案。这就是为什么我试图确保我理解你的问题。为什么不告诉我你是否使用了 net-snmp 命令行工具?
  • 是的,我尝试使用Net-SNMP snmpset 命令行工具进行设置,并使用snmpget 工具进行查询。我也尝试了不同的工具SnmpB

标签: string hex byte snmp data-conversion


【解决方案1】:

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

因此,将 Bits 值设置为大 (0) 就像使用语法一样

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

要设置多个标志,例如中型和紧凑型,请使用

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

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

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

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

顺便说一下,十六进制的“60”与 SNMP 对“位 1,2”(第二和第三位,MSB 在前)的编码方式相同。

RFC1906 第 8 节中介绍了 SNMP 如何编码和解码 BITS 值。有了这些知识,您只需要了解十六进制转换的工作原理,这很容易在 Google 上搜索。

编辑:我想这就是你要找的东西:

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

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

应该注意,如果您尝试在 BITS 变量上设置 OCTET STRING 值,您可能会期望 SNMP 代理返回类型错误。但是,由于 BITS 只是一个基于 OCTET STRING 类型的 SMI 宏,它们实际上以相同的方式编码。因此,代理应该愉快地设置该值。

【讨论】:

  • 3,4,5,6,7,8 位的 HEX STRING 值分别是多少?也适用于所有范围,从 0-8 位?
  • @minto,你想学习如何用二进制计算数学吗?查看维基百科页面。如果您还有更多问题,请在 SO 上发布新问题,而不是评论已回答的旧问题。 en.wikipedia.org/wiki/Binary_number#Counting_in_binary
  • 我做到了,但转换并不是那么简单。不是直接换算,而是计算。
  • 然后,请随时发布有关它的问题。但是 cmets 字段不是正确的位置。 =)
  • 哦,done,我同意。
【解决方案2】:

使用 Net-SNMP,您不需要计算位值,您可以编写以下代码来设置一个或多个位:

snmpset -v2c -c public 192.168.100.1   $ObjectId   = "medium compact"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2012-12-16
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多