string - BITS 数据类型的十六进制字符串表示是什么?

标签 string hex byte snmp data-conversion

如何将BITS数据类型转换为HEX STRING数据类型? (如0x80)(0)、(1)、(2)BITSHEX STRING分别表示什么? DEFVAL 为'00'h

Composed Type: Bits
Base Type: BITS

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

最佳答案

您可能已经在“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 的邮件列表文件中找到了它。

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

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

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

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

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

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

与正常 (LSB) 字节编码相比,这有点落后,但请再次阅读 RFC1906 以获取其工作原理的描述。

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

关于string - BITS 数据类型的十六进制字符串表示是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404023/

相关文章:

c - 用于转义字符串的标准 C 库

c - 使用 C 确定系统是使用 Big Endian 还是 Little Endian

c# - 将 byte[] 转换为 String 并返回 c#

C# 中的十六进制变量

swift - 如何快速将浮点值转换为字节数组?

c# - 当 Byte 溢出时实际发生了什么?

java - 任务是检查no的第一位是否为零?

android - 从资源中获取 android 字符串数组中的数据

java - 如何用最大允许出现次数替换连续多次出现的字符?

c - 通过地址连接 DS18B20