簡體   English   中英

為什么Pysnmp在Python 3中將字節保存為字符串

[英]Why does Pysnmp save bytes as strings in Python 3

我試圖在使用Pysnmp 4.3.1的Python 3.4.2中使用val.prettyPrint()來讀取OID的值。 val.prettyPrint()返回任何類型的變量的字符串。 因此,我從字符串類型而不是字節類型收到此值"b'zeus.snmplabs.com'" 因此,當我將此數據發送到服務器時,它將b前綴視為字符串的一部分。 這是故意的錯誤還是功能?

這是一個錯誤(實際上是在pyasn1中),但是開發pysnmp代碼具有適當的解決方法。

請記住,在SNMP(和ASN.1)中,OCTET STRING類型應該攜帶字節,而不是文本。 因此,如果可能的話.prettyPrint()嘗試將值表示為可打印的7位ASCII字符串。 否則,它將切換為十六進制表示形式(0xdeadbeef)。

應該攜帶文本的SNMP對象通常在MIB中顯式地鍵入為TEXTUAL-CONVENTION對象。 SNMP管理器根據MIB信息將協議級別的OCTET STRING值“廣播”為可指定格式(ASCII或UTF-8)的可打印內容,並忽略所有不可打印的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM