(Python3) struct

功能:字节数组与二进制数据的相互转换, 常用以下两个功能

官方:https://docs.python.org/2/library/struct.html#struct.error

功能一:打包

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

功能二:解包

struct.unpack(fmt, string)

fmt由符号和字符组成

fmt符号
符号描述
@native
=native
<little-endian
>big-endian
!network=big-endian
fmt字符
格式C类型Python类型字节数
xPad byteno value 
ccharstring of length11
bsigned charinteger1
Bunsigned charinteger1
?_Boolbool1
hshortinteger2
Hunsigned shortinteger2
iintinteger4
Iunsigned int integer4
llonginteger4
Lunsigned longinteger4
qlong longinteger8
Qunsigned long longinteger8
ffloatfloat4
ddoublefloat8
schar[]string 
pchar[]string 
Pvoid *integer 
    

示例:

import struct

#打包,将整数或二进制数值转换成对应格式的字节数组
print(struct.pack('hhl',1,2,3))
#输出 b'\x01\x00\x02\x00\x03\x00\x00\x00'

#解包,将字节数组转换成整数或二进制对应的数据
print(struct.unpack('hh1',b'\x01\x00\x02\x00\x03\x00\x00\x00'))
#输出 (1, 2, 3)

#计算格式化后字节数组长度
print(struct.calcsize('hhl'))
#输出 8

#末尾补2字节0
print(struct.pack('>llhxx',1,2,3))
#输出 b'\x00\x00\x00\x01\x00\x00\x00\x02\x00\x03\x00\x00'

#高级解包
s = b'\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'
print(struct.unpack("<ccIIIIIIHH",s))
#输出 (b'B', b'M', 691256, 0, 54, 40, 640, 360, 1, 24)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值