纯pythonx.690实现
x690的Python项目详细描述
{Python实现^a1}
此模块包含“x690”标准的纯Python实现 误码编码/解码。其他编码目前不受支持,但是 欢迎拉取请求。在
类型扩展
它允许通过简单地将基类化来定义和检测新的数据类型 类x690.types.Type。一个例子可以在puresnmp
示例
只需调用Python构建^{tt2},就可以完成对字节的编码$ 在来自x690.types的实例上:
单个值的编码
importx690.typesast>>>myvalue=t.Integer(12)>>>asbytes=bytes(myvalue)>>>repr(asbytes)b'\x02\x01\x0c'
使用序列
^{pr2}$从字节解码
通过对字节数据调用x690.types.pop_tlv来解码字节。这个遗嘱 返回一个元组,其中第一个值包含解码的对象,并且 第二个字节将包含所有未解码的剩余字节。在
importx690.typesast>>>data=b'0\t\x02\x01\x0c\x02\x01\x0c\x02\x01\x0c'>>>decoded,remaining_bytes=t.pop_tlv(data)>>>decodedSequence(Integer(12),Integer(12),Integer(12))>>>remaining_bytesb''
键入提示和强制执行
New in 0.3.0
在解码字节时,可以指定一个执行两个操作的expected类型 事情:首先,它告诉像mypy这样的工具返回类型是什么,以及 其次,它运行一个内部类型检查,确保返回 值为预期类型。x690.exc.UnexpectedType,否则将引发。在
当然,这只在你事先知道类型的情况下有效。在
importx690.typesast>>>data=b'0\t\x02\x01\x0c\x02\x01\x0c\x02\x01\x0c'>>>decoded,remaining_bytes=t.pop_tlv(data,enforce_type=t.Sequence)>>>decodedSequence(Integer(12),Integer(12),Integer(12))>>>remaining_bytesb''
严格解码
New in 0.3.0
当使用pop_tlv解码并且不需要任何剩余字节时,请使用 strict=True,如果有{tt9}$,它将引发{tt9}$ 剩余数据。在
importx690.typesast>>>data=b'0\t\x02\x01\x0c\x02\x01\x0c\x02\x01\x0cjunk-bytes'>>>decoded,remaining_bytes=t.pop_tlv(data,strict=True)Traceback(mostrecentcalllast):...x690.exc.IncompleteDecoding:Strictdecodingstillhad10remainingbytes!
- 项目
标签: