Python内建模块struct实例详解
本文研究的主要是Python内建模块struct的相关内容,具体如下。
Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没有像c中定义了位、字节、整型等底层初级类型。因为Python本来就是高级解释性语言,运行的时候都是经过翻译后再在底层运行。如何打通Python和其他语言之间的类型定义障碍,Python的内建模块struct完全解决了所有问题。
知识介绍:
在struct模块中最最常用的三个:
(1)struct.pack:用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。
(2)struct.unpack:刚好与struct.pack相反,用于将字节流转换成python数据类型,该函数返回一个元组。
(3)struct.calcsize:计算格式字符串所对应的结果的长度。
转换过程中遇到的格式操作:
| 格式符 | C语言类型 | Python类型 |
|---|---|---|
| x | padbyte | novalue |
| c | char | stringoflength1 |
| b | signedchar | integer |
| B | unsignedchar | integer |
| ? | _Bool | bool |
| h | short | integer |
| H | unsignedshort | integer |
| i | int | integer |
| I | unsignedint | integerorlong |
| l | long | integer |
| L | unsignedlong | long |
| q | longlong | long |
| Q | unsignedlonglong | long |
| f | float | float |
| d | double | float |
| s | char[] | string |
| p | char[] | string |
| P | void* | long |
实例详解:
#!/usr/bin/python
#-*-coding:utf-8-*-
'''测试struct模块'''
fromstructimport*
importarray
deffun_calcsize():
print'ci:',calcsize('ci')#计算格式占内存大小
print'@ci:',calcsize('@ci')
print'=ci:',calcsize('=ci')
print'>ci:',calcsize('>ci')
print'ic:',calcsize('>ic')
print'i',a)[0])#因为pack返回的是元组,即使只有一个元素也是元组的形式
print'小端:',hex(unpack('ci:5
ic:5
0x110x220x330x440x550x660x770x88
unpack0x112233440x55667788
pack_into0x110x220x330x440x550x660x770x88
pack_from0x112233440x55667788
小端:
pack0x440x330x220x110x880x770x660x55
unpack0x112233440x55667788
pack_into0x440x330x220x110x880x770x660x55
pack_from0x112233440x55667788
test
字符1的二进制:0x31
字符2的二进制:0x32
字符3的二进制:0x33
字符4的二进制:0x34
大端:0x31323334
小端:0x34333231
'''
本实例所用Python软件环境:win10+anaconda3+pycharm,Python版本:3.6
总结
以上就是本文关于Python内建模块struct实例详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!