纯pythonx.690实现

x690的Python项目详细描述


{Python实现^a1}

Build & Publish Docs

此模块包含“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!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring JSTL:绝对uri:http://java.sun.com/jsp/jstl/core无法在两个站点中解析。xml或与此应用程序一起部署的jar文件   java在Junit测试中找不到失败的符号   java为什么在没有同步块的情况下调用wait()、notify()或notifyAll()不是编译器错误?   使用onDraw()绘制多个位图的java Android在曲面视图上放大缩小画布   在java中比较args值和字符串   java更改文件中的特定字节   java TransformerFactory破坏<html>标记中的<input>和<br>标记   azure appinsights java自定义指标不起作用   Java泛型在实现接口的类上指定上界,接口本身指定上界   java AS400 prog和动态类路径   java应用程序截图时收到空消息   java无法从片段中获取上下文   找不到java配置单元UDF类   linux是一个提供java的接口。lang.NoClassDefFoundError   java如何使用面向对象建模创建此数据库