为什么Pysnmp在Python 3中将字节保存为字符串
我正在尝试在Python 3.4.2中使用为什么Pysnmp在Python 3中将字节保存为字符串,python,python-3.x,encoding,pysnmp,Python,Python 3.x,Encoding,Pysnmp,我正在尝试在Python 3.4.2中使用val.prettyPrint(),使用Pysnmp 4.3.1读取OID的值val.prettyPrint()返回任何类型变量的字符串。因此,我收到了字符串类型的值,而不是字节类型的值。因此,当我将此数据发送到服务器时,它将b前缀视为字符串的一部分。这是一个bug还是故意的功能?这是一个bug(实际上,在pyasn1中),但是有一个解决方法 请记住,在SNMP(和ASN.1)中,八进制字符串类型应该携带字节,而不是文本。因此,如果可能,prettyPr
val.prettyPrint()
,使用Pysnmp 4.3.1读取OID的值val.prettyPrint()
返回任何类型变量的字符串。因此,我收到了字符串类型的值,而不是字节类型的值。因此,当我将此数据发送到服务器时,它将b
前缀视为字符串的一部分。这是一个bug还是故意的功能?这是一个bug(实际上,在pyasn1中),但是有一个解决方法
请记住,在SNMP(和ASN.1)中,八进制字符串类型应该携带字节,而不是文本。因此,如果可能,prettyPrint()尝试将值表示为可打印的7位ASCII字符串。否则,它将切换到十六进制表示(0xdeadbeef)
应该携带文本的SNMP对象通常在MIB中显式地类型化为文本约定对象。基于MIB信息,SNMP管理器将以指定的编码(ASCII或UTF-8)将协议级八位字节字符串值“强制转换”为可打印的字符串,忽略所有不可打印的字符。这看起来像
repr
输出,什么是val
?