- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[优质文档]python的struct模块.doc
Python模块学习 ---- struct 数据格式转换
2009-08-05 01:00
Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本 类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时 候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(4字节)变量的数据到 Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Python认识的整数呢? Python的标准模块struct就用来解决这个问题。
struct模块的内容不多,也不是太难,下面对其中最常用的方法进行介绍:
最简单的图解:
3s代表3个字节的string。每个s是一个Byte。(汉字2个)。
注:10s means a single 10-byte string (python Doc 2.6.2)
struct.pack
struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息在 HYPERLINK /JGood/archive/2009/06/22/4290158.aspx \l fmt 下面有所介绍。v1, v2, ...表示要转换的python值。下面的例子将两个整数转换为字符串(字节流):
import struct??
??
a = 20??
b = 400??
??
str = struct.pack(ii, a, b)??#转换后的str虽然是字符串类型,但相当于其他语言中的字节流(字节数组),可以在网络上传输??
print length:, len(str)??
print str??
print repr(str)??
??
#---- result??
#length: 8??
# ???? ----这里是乱码??
#\x14\x00\x00\x00\x90\x01\x00\x00??
import struct a = 20 b = 400 str = struct.pack(ii, a, b) #转换后的str虽然是字符串类型,但相当于其他语言中的字节流(字节数组),可以在网络上传输 print length:, len(str) print str print repr(str) #---- result #length: 8 # ----这里是乱码 #\x14\x00\x00\x00\x90\x01\x00\x00
格式符i表示转换为int,ii表示有两个int变量。进行转换后的结果长度为8个字节(int类型占用4个字节,两个int为8个字 节),可以看到输出的结果是乱码,因为结果是二进制数据,所以显示为乱码。可以使用python的内置函数repr来获取可识别的字符串,其中十六进制的 0 0别表示20和400。
struct.unpack
struct.unpack做的工作刚好与struct.pack相反,用于将字节流转换成python数据类型。它的函数原型为:struct.unpack(fmt, string),该函数返回一个元组。 下面是一个简单的例子:
str = struct.pack(ii, 20, 400)??
a1, a2 = struct.unpack(ii, str)??
print a1:, a1??
print a2:, a2??
??
#---- result:??
#a1: 20??
#a2: 400??
str = struct.pack(ii, 20, 400) a1, a2 = struct.unpack(ii, str) print a1:, a1 print a2:, a2 #---- result: #a1: 20 #a2: 400
struct.calcsize
struct.calcsize用于计算格式字符串所对应的结果的长度,如:struct.calcsize(ii),返回8。因为两个int类型所占用的长度是8个字节。
struct.pack_into, struct.unpack_from
这两个函数在Python手册中有所介绍,但没有给出如何使用的例子。其实它们在实际应用中用的并不多
您可能关注的文档
最近下载
- 养老院门卫管理制度.pdf VIP
- 电力设施保护条例实施细则.pdf VIP
- 统编语文三年级上册第七单元《口语交际:身边的“小事” 》.pptx VIP
- 2024年中央纪委国家监委驻中国邮政集团有限公司招聘笔试参考题库附带答案详解.pdf VIP
- 《大学生创新创业基础》 第六章 市场调查与营销策略.pptx
- 建筑防水工程施工质量监理实施细则hg.doc VIP
- 环境材料概论 课件全套 第1--9章 绪论、吸附材料 ---环境材料的绿色设计.pptx
- 中职英语英语教学计划.docx VIP
- HGT2226-2019普通工业沉淀碳酸钙.pdf VIP
- 3肖仰华-大规模知识图谱构建与应用.pdf VIP
文档评论(0)