使用Python解码SNMP OctetString为整数的问题求助
SNMP OctetString 解码转整数方案
核心原理
你拿到的1.3.6.1.4.1.11.2.3.9.4.2.1.1.16.1.2.0属于惠普打印设备的专属OID,对应返回的OctetString本质是字节序列,要转整数只需要将每个字符对应的ASCII值按大端序拼接计算即可。
手动计算验证
针对你给出的示例值Hph:
- 拆分单个字符获取对应ASCII十进制值:
H=72、p=112、h=104 - 大端序计算:
72 * 256² + 112 * 256 + 104 = 4747368
代码实现
Python 通用实现
def octet_str_to_int(octet_str: str) -> int: # 用latin-1单字节编码避免乱码丢失字节 byte_seq = octet_str.encode("latin-1") return int.from_bytes(byte_seq, byteorder="big") # 测试你的数据 print(octet_str_to_int("Hph")) # 输出 4747368
PySNMP 专属实现
如果你用PySNMP库获取的原始OctetString对象,直接调用内置方法转换即可:
# snmp_val为PySNMP返回的OctetString实例 byte_seq = snmp_val.asOctets() result = int.from_bytes(byte_seq, byteorder="big")
内容的提问来源于stack exchange,提问作者Victor Semenov
相关产品推荐
相关产品推荐

