python pack和unpack的用法

本文介绍Python中使用struct模块进行数据打包和解包的方法。通过具体示例展示了如何将不同类型的Python数据转换为字节流,以及如何从字节流中解析出原始数据。此外,还详细解释了格式化字符串的含义及其各个组成部分。

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

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

pack(fmt, v1, v2, ...) 

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

unpack(fmt, string)   

=======================================

>>> import struct
>>> struct.pack('>H',56)
'\x008'

>>> struct.unpack('>H','\x008')
(56,)


>>> struct.unpack('>H','\x008')[0]
56

====================

>>> struct.pack('@H', 56)
'8\x00'
>>> struct.unpack('@H', '8\x00')
(56,)
>>>
 

=====================

fmt格式为:

FORMATC TYPEPYTHON TYPESTANDARD SIZENOTES
xpad byteno value
ccharstring of length 11
bsigned charinteger1(3)
Bunsigned charinteger1(3)
?_Boolbool1(1)
hshortinteger2(3)
Hunsigned shortinteger2(3)
iintinteger4(3)
Iunsigned intinteger4(3)
llonginteger4(3)
Lunsigned longinteger4(3)
qlong longinteger8(2), (3)
Qunsigned long longinteger8(2), (3)
ffloatfloat4(4)
ddoublefloat8(4)
schar[]string
pchar[]string
Pvoid *integer(5), (3)

格式中的第一个字符来改变对齐方式(字节序).定义如下

CHARACTERBYTE ORDERSIZEALIGNMENT
@nativenativenative
=nativestandardnone
<little-endianstandardnone
>big-endianstandardnone
!network (= big-endian)standardnone
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字正腔圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值