- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
转换到C结构或从C结构转换回来
struct模块允许创建一个等效于C结构的字符串,可以读写那些非Python程序生成的二进制文件。或者用于不同程序的网络通信。因为pickle模块的数据类型只能被Python识别。
使用struct需要使用格式字符串,调用struct.pack(format,v1,v2, ...)。格式字符如下:
字符 C类型 Python类型 c Char 长度为1的字符串 s char[] 字符串 p (pascal字符串) 字符串 i Int 整型(4) I Unsigned int 整型或长整型* b Signed char 整型 B unsigned char 整型 h Short 整型 H unsigned short 整型 l Long 整型 Long unsigned Long 长整型 f Float 浮点型 d Double 浮点型 x (pad style) - P void* 整型或长整型 带有星号的表示依赖于平台的指针是32位还是16位。
例如,如下的C结构的等价物用:
struct {
int a;
int b;
char c;
};
采用值10,20,Z,如下:
import struct
z=struct.pack(iic,10,20,Z)
z
\012\000\000\000\024\000\000\000z
从字节串反向转换用struct.unpack(format,data),返回元组:
struct.unpack(iic,z)
(10,20,Z)
传递给unpack的格式字符串一定要说明字符串中的所有数据,否则会产生异常。使用struct.calcsize(format)可以计算给定的格式字符串占用的字节数。
可以在格式字符前加上一个编号,表示这个数据类型重复的次数。为了便于理解,可以在格式字符串中的格式字符之间加入空格。
重复器编号的运行方式与s(字符串)格式字符稍有差别。重复器会告诉字符串的长度(5s意味着5个字符的字符串)。0s意味着一个空字符串,而0c意味着0字符串。
如果C的int和long的大小相同,T格式字符会把给定的编号解包为Python长整型。如果C int比C long小,T把编号转换为Python整数。
p格式字符串支持pascal字符串。这种字符串使用第一个字节存储字符串长度,所以最大长度为255字节,其余的截断。如果提供了重复器则是指定整个字符串的字节数,包含长度字节。如果字符串小于指定字节数,则pack会添加空的填充字符。
默认时,struct会把字节顺序和结构成员对齐使用当前平台的C编译器使用的格式。通过下表列出的某个修饰符启动自己的格式字符串,可以超越这种行为。例如使用网络序:
struct.pack(ic,65535,D) #本机字节序为高序优先
\377\377\000\000D
struct.pack(!ic,65535,D) #强制网络字节序
\000\000\377\377D
修饰符
字节顺序
对齐
大小
高序优先(little-endian) 无 标准 或! 低序优先(网络) 无 标准 = 内在的 无 标准 @(默认) 内在的 内在的 内在的 当使用了一个大小为standard的修饰符,则C short会占据2个字节,int、long、float将使用4个字节,double使用8个字节。
如果需要使用对齐,而又不想用@(内在的对齐)时,可用x格式字符插入填充字节。如果必须强制一个结构的末端依据特殊类型的对齐规则进行对齐,则可用这种类型的格式代码(计数值为0)。如下例子强制单字符的结构对齐整型边界:
struct.pack(c,A)
A
struct.pack(c0l,A)
A\000\000\000
P(指针)格式字符只能在本地赋值中使用。
可用struct模块读写二进制文件,比如提取.wav文件的前36个字节的文件信息头。内容如下:
RIFF(4字节),用于识别文件类型
高序优先的长度字段(4字节)
WAVE(4字节),用于识别文件类型
fmt (4字节)
格式定义的子数据块长度(4字节)
格式类型(2字节)
声道数(2字节)
采样频率/Hz(4字节)
每秒数据量/字节(4字节)
样本字节数/字节(2字节)
声道宽度/位(2字节)
表示标题的格式字符串:
4s i 4s 4s ihhiihh
如下是提取WAV文件头信息的例子:
s=open(c:\\winnt\\media\\ringin.wav,rb).read(36)
struct.unpack(4si4s4sihhiihh,s)
(RIFF,10018,WAVE,fmt ,16,1,1,11025,1
您可能关注的文档
- PAG杠杆收购好孩子鼓舞国内中小企业.doc
- PASCAL语言基础(1).doc
- pascl5枚举型子界型.doc
- PBT节能灯头专用料.doc
- PC+ABS C1200HF物性资料.doc
- PCABSC1200HF物性资料.doc
- PCB企业ROHS管理的方方面面.doc
- pcb新人找客户经验.doc
- PCB软件高亮显示操作总结.doc
- PC合金改性塑料简介.doc
- 2025浙江绍兴市镜湖新区开发建设办公室选调下属事业单位工作人员2人模拟试卷及参考答案详解一套.docx
- 消防岗位练兵课件视频.pptx
- 急性主动脉综合征的发病机制及病理研究进展通用ppt.pptx
- 2025浙江绍兴市镜湖新区开发建设办公室选调下属事业单位工作人员2人模拟试卷参考答案详解.docx
- 2025浙江绍兴市部分机关事业单位编外和企业工作人员招聘9人考前自测高频考点模拟试题及答案详解一套.docx
- 风电场集中和远程监控系统项目投资风险评估报告.docx
- 2025浙江绍兴市部分机关事业单位编外和企业工作人员招聘9人考前自测高频考点模拟试题附答案详解.docx
- 2025浙江绍兴市部分机关事业单位编外和企业工作人员招聘9人考前自测高频考点模拟试题及参考答案详解一.docx
- 2025浙江绍兴市部分机关事业单位编外和企业工作人员招聘9人考前自测高频考点模拟试题及参考答案详解1.docx
- 2025浙江绍兴市部分机关事业单位编外和企业工作人员招聘9人考前自测高频考点模拟试题及答案详解1套.docx
最近下载
- 水文学基础知识课件.pptx VIP
- 水文学基础知识.pdf VIP
- 仓库仓储管理系统使用手册.pdf VIP
- 水利工程中的水文工程.pptx VIP
- 15.《文化线路宪章(2008年)》.pdf VIP
- 人教版高中物理必修第一册第1章运动的描述整合课件.ppt VIP
- 5G基站安装详细图解.docx VIP
- 教学能力比赛答辩题(一)(含答案).pdf VIP
- 水利工程基础知识-1.ppt VIP
- IEC 60146-1-1-2024(E) Semiconductor converters – General requirements and line commutated converters – Part 1-1:Specification of basic requirements 半导体变流器. 一般要求和线路换向变流器. 第1 -1部分: 基本 r 规范.pdf
文档评论(0)