带类型的结构序列化/反序列化

typestruct的Python项目详细描述


类型结构

这是一个python 3库amis,使标准模块struct更易于使用。

示例

@dataclassclassICMPPacket(Packet):ttype:uint8code:uint8checksum:uint16rest:Slice(4)packet=ICMPPacket(1,2,3,b"abcd")binary=packet.serialize()print(binary)# => b'\x01\x02\x03\x00abcd'recovered=ICMPPacket.deserialize(binary)print(recovered)# => ICMPPacket(ttype=1, code=2, checksum=3, rest=b'abcd')print(packet.serialize(endian=Endian.BIG_ENDIAN))# => b'\x01\x02\x00\x03abcd'

可变长度

@dataclassclassTLV(Packet):tag:uint8length:uint8value:Varlength(lambdas:s.length)tlv=TLV(tag=1,length=5,value=b"abcde")binary=tlv.serialize()print(binary)# => b'\x01\x05abcde'recovered=TLV.deserialize(binary)print(recovered)# => TLV(tag=1, length=5, value=b'abcde')

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
ArrayList中实体对象上的JAVA泛型   带Redis的爪哇芹菜vs单用Redis   java在设备面向横向时隐藏标题栏/通知栏   java JXTreeTable:如何使用ComponentProvider为一列设置渲染器   java创建异常的成本与记录异常的成本相比   java在方法参数中使用setter传递新对象   java在一个类中的方法与另一个类中的方法交互时遇到问题   java如何迭代2个大小相等的ArrayList   Java getDesktop()。open在Windows中工作,但在Mac中不工作   从tomcat切换到jetty后的java“无法启动嵌入式容器”,Spring引导   java如何使用void方法   java如何在解组时在JAXB的ValidationEventHandler中获取节点值?   如何使用Akka Java API创建不响应的TCP接收器   JavaScriptjQuery在java中将记录上传到数据库时的进度条   如何在重新绘制时在java小程序中显示上一个图像