python的pack和unpack用法

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)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的unpack函数是用来解包二进制数据的。它的使用方法是根据给定的格式(fmt),将数据解包成相应的值,并以元组的形式返回。 例如,可以使用unpack函数来解包一个包含长度、包ID和包内容的二进制数据。首先,使用结构格式字符串来定义解包的规则。比如,">HH{0}s"表示先解包一个用大端字节序表示的无符号短整数作为包长度,然后解包一个用大端字节序表示的无符号短整数作为包ID,最后解包一个长度为(size-4)的字符串作为包内容。其中,size是包的总长度。 然后,将待解包的二进制数据传入unpack函数,并按照定义的格式进行解包。解包的结果会以元组的形式返回,可以通过索引获取各个解包后的值。例如,size, cmd, string = struct.unpack(">HH{0}s".format(size - 4), raw)。其中,raw是待解包的二进制数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python-unpack:递归地取消归档并解压缩给定目录中的所有文件](https://download.csdn.net/download/weixin_42097914/18750824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pythonpack和unpack用法](https://blog.csdn.net/free__o/article/details/128676261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值