python的pack和unpack用法

Python的struct模块提供了pack和unpack方法,用于处理二进制流的封包和解包。这两个函数基于C结构体的字节流操作,通过指定格式fmt来转换数据。例如,>表示大端字节序,H表示无符号短整型。文章中展示了如何使用这些方法解析包长度、包ID和包内容,并进行封包操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python的pack和unpack用法
pack和unpack在处理二进制流中比较常用的封包、解包格式

按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)

pack(fmt, v1, v2, …)

按照给定的格式(fmt)解析字节流string,返回解析出来的tuple

unpack(fmt, string)

计算给定的格式(fmt)占用多少字节的内存

calcsize(fmt)
在这里插入图片描述
在这里插入图片描述

格式中的第一个字符来改变对齐方式(字节序).定义如下在这里插入图片描述
例如:格式为:2字节(包长度)+4字节(包id)+包内容 >表示字节序
解包
size, = struct.unpack(‘>H’,raw[0:2])
cmd, = struct.unpack(‘>H’, raw[2:4])
string, = struct.unpack(‘>{0}s’.format(size - 4), raw[4:size])
封包:
fmt = “>HH{0}s”.format(len(result))
args = (len(result), cmd,result)
data = struct.pack(fmt, *args)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值