Python之struct模块

本文介绍了Python的struct模块,主要用于处理二进制数据,包括字节顺序、格式化字符串以及Struct、pack、unpack和calcsize等常用方法的使用。通过struct模块,可以方便地将数据转换为十六进制表示,并进行解包操作。

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

官网介绍

1.struct作用

以Python的字符串作为表示C结构,处理存储在文件中或来自网络连接的二进制数据

2.字节顺序

在这里插入图片描述

如果第一个字符中未指定,则默认的为@,即小端

另:字节序是否用大写还是小写,与具体的使用的系统有关,可以通过sys.byteorder 查看系统的字节序的大端及小端的情况

通常情况:使用!表示大端开始的

3.格式化字符串

在这里插入图片描述
在这里插入图片描述

4.struct常用方法

4.1 Struct

返回struct对象

s = struct.Struct('I3sf')#格式化,I:int类型,3s:3个字符,f:float
print s

print s.format

返回struct对象

<Struct object at 0x0000000003DFDD88>
'I3sf'

4.2 pack

原型:def pack(fmt, *args):

每个字节的数据转换成对应个数的十六进制表示

  • 格式化
from struct import *

a = pack("hhl", 1, 2, 3)
print repr(a)

结果:

'\x01\x00\x02\x00\x03\x00\x00\x00'

  • 格式化中含有数字,其表示重复的
b = pack("2hl", 1, 2, 3)
print repr(b)

结果:

\x01\x00\x02\x00\x03\x00\x00\x00

  • 末尾填充,并根据对齐方式补充
b = pack("llh0l", 1, 2, 3)
print repr(b)

结果

\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00

4.3 unpack

def unpack(fmt, string):

解包出来的是元组

b = pack("2hl", 1, 2, 3)

a = unpack("llh",b)
print type(a)
print a

结果为:

<type 'tuple'>
(1, 2, 3)

4.4 calcsize

def calcsize(fmt):

  • 统计大小
calcsize("hhl")

结果为8

<type 'tuplpythone'>
(1, 2, 3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值