Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Pysnmp在Python 3中将字节保存为字符串_Python_Python 3.x_Encoding_Pysnmp - Fatal编程技术网

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

为什么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

我正在尝试在Python 3.4.2中使用
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