python处理C语言结构体---struct

时间:2024-11-20 15:26:42

(参考:/D_R_L_T/article/details/91910774
/w83761456/article/details/21171085?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param)

简介

python中的struct主要用来处理C结构数据的,读入的时候先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组。
主要有pack()和unpack()两个方法

主要方法

1、pack()
按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
(cfmt,v1,v2,…)
v1,v2,…为C结构数据
cfmt为要包装成的格式
eg:
在这里插入图片描述
2、unpack()
按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
(pfmt,aa)
解包
pfmt为python的类型
eg:
在这里插入图片描述
3、calcsize()
计算给定的格式(fmt)占用多少字节的内存
clacsize(fmt)

python类型与C类型

Format C type python type STANDARD SIZE
x pad type no value
c char string of length 1 1
b signed char integer 1
B unsigned char integer 1
? _Bool bool 1
h short integer 2
H unsigned short integer 2
i int integer 4
I unsigned int integer 4
l long integer 4
L unsigned long integer 4
q long long integer 8
Q unsigned long long integer 8
f float float 4
d double float 8
s char[] string
p char[] string
P void * integer

大小端对齐方式

在Format string的首位,有一个可选字符来决定大端和小端

符号 对齐方式
@ 本机的字符顺序(大端或小端,默认)
= 本机的字符顺序(大端或小端,默认)
< 小端
> 大端
! 大端

如int i = 1
int占4个字节,每个字节8bit
则小端顺序的话为:0000 0000 0000 0000 0000 0000 0000 0001(共32bit)
大端顺序为:0000 0001 0000 0000 0000 0000 0000 0000

相关文章