python struct模块的使用

枫铃3年前 (2021-09-30)Python271

struct模块中的函数

函数returnexplainpack(fmt,v1,v2…)string按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回.pack_into(fmt,buffer,offset,v1,v2…)None按照给定的格式(fmt),将数据转换成字符串(字节流),并将字节流写入以offset开始的buffer中.(buffer为可写的缓冲区,可用array模块)unpack(fmt,v1,v2……)tuple按照给定的格式(fmt)解析字节流,并返回解析结果pack_from(fmt,buffer,offset)tuple按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果calcsize(fmt)size of fmt计算给定的格式(fmt)占用多少字节的内存,注意对齐方式

格式化字符串

当打包或者解包的时,需要按照特定的方式来打包或者解包.该方式就是格式化字符串,它指定了数据类型,除此之外,还有用于控制字节顺序、大小和对齐方式的特殊字符.

对齐方式

为了同c中的结构体交换数据,还要考虑c或c++编译器使用了字节对齐,通常是以4个字节为单位的32位系统,故而struct根据本地机器字节顺序转换.可以用格式中的第一个字符来改变对齐方式.

定义如下

CharacterByte orderSize Alignment@(默认)本机本机=本机标准<小端标准>大端标准!network(大端)标准Python学习交流QQ群:579817333

格式符

格式符C语言类型Python类型Standard sizexpad byte(填充字节)no valueccharstring of length 11bsigned charinteger1Bunsigned charinteger1?_Boolbool1hshortinteger2Hunsigned shortinteger2iintinteger4I(大写的i)unsigned intinteger4l(小写的L)longinteger4Lunsigned longlong4qlong longlong8Qunsigned long longlong8ffloatfloat4ddoublefloat8schar[]stringpchar[]stringPvoid *long

注意:

  • _Bool在C99中定义,如果没有这个类型,则将这个类型视为char,一个字节;
  • q和Q只适用于64位机器;
  • 每个格式前可以有一个数字,表示这个类型的个数,如s格式表示一定长度的字符串,4s表示长度为4的字符串;4i表示四个int;
  • P用来转换一个指针,其长度和计算机相关;
  • f和d的长度和计算机相关;

相关文章

python中的变量与对象

python中的变量与对象

一. 什么是变量 变量就是以前学习的数学中常见的等式x = 3(x是变量,3是变量值),在编程中,变量不仅...

python 中有趣的库tqdm

Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息用法:tqdm(iterator) 方法...

Python 操作字典 的几个技巧

Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 1 创建字典 Python有两种方法可以创建字典,第一种是...

Python-dataframe合并(merge函数)

import pandas as pd import numpy as np df1=pd.DataFrame({'key':[&...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。