为什么 Pysnmp 将字节保存为字符串在 Python 3 中?

2024-06-16 12:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python3.4.2中使用val.prettyPrint(),使用pysnmp4.3.1读取oid的值。val.prettyPrint()返回任何类型变量的字符串。所以我接收这个值"b'zeus.snmplabs.com'",它是string类型而不是bytes类型。因此,当我将这些数据发送到服务器时,它将b前缀视为字符串的一部分。这是故意的错误还是功能?在


Tags: 数据字符串功能com类型stringbytes错误
1条回答
网友
1楼 · 发布于 2024-06-16 12:07:02

这是一个bug(实际上,在pyasn1中),但是development pysnmp code有一个解决方法。在

请记住,在SNMP(和ASN.1)中,八位字节字符串类型应该携带字节,而不是文本。因此,如果可能,prettyPrint()会尝试将值表示为可打印的7位ASCII字符串。否则它将切换到十六进制表示(0xdeadbeef)。在

在mib中,应该携带文本的SNMP对象通常显式地类型化为文本约定对象。基于MIB信息,SNMP管理器会将协议级别的八位字节字符串值“强制转换”为指定编码(ASCII或UTF-8)的可打印文件,同时忽略所有不可打印的字符。在

相关问题 更多 >