SNMP 中的 Octet String 的值为 8?

Octet String in SNMP has a value 8?

您好,我从 wireshark 捕获了一个数据包。

我打开文件并在变量绑定中看到以下输出。

对象名称:.1.3.6.1.4.1.193.183.4.1.4.5.1.8(iso.3.6.1.4.1.193.183.4.1.4.5.1.8) 值(Octect 字符串):353038

我能找到八进制字符串的整数值吗?

八进制字符串和八进制值是一样的吗?如果是这样,八进制值可以在 353038 中包含 8 .. ?

请指导我如何知道八进制字符串的整数值:353038

八位字节串是一个字节序列。在您的示例中,它由 3 个字节组成,十六进制值为 35、30 和 38。在一般情况下,您无法以有意义的方式谈论 "integer value of the octet string"。在这种特殊情况下,如果将单个字节解释为 ASCII,则 35 个十六进制表示字符“5”,30 个十六进制表示字符“0”,38 个十六进制表示字符“8”,因此整个字符串为“508”。

我怀疑您要查找的 "integer value" 在这种情况下是 508,但请记住,对字符串含义的解释在很大程度上取决于应用程序。

八位字节字符串在 ASN.1 和 SNMP 中定义为 OCTET STRING。没有什么叫做"Octect String"。同时,八进制字符串与八进制数字系统关系不大。

当您看到 353038 是一个八位字节字符串时,它只是表示网络上有一个 SNMP 数据包已经到达,它包含一串 ASCII 字符“3”、“5”、“3” 、“0”、“3”和“8”。它本质上是一个字符串,不一定需要是一个整数(除非相应的 MIB 文档中 .1.3.6.1.4.1.193.183.4.1.4.5.1.8 的定义强制要求这一事实)。

你上面的大部分问题都是无效的,因为你误解了八位字节串的概念。但如果对象定义确实指示字符串表示整数,则您始终可以将接收到的字符串转换为整数。大多数编程语言都支持这种转换。