Python struct库怎样用,常用函数有哪些
Admin 2022-09-02 群英技术资讯 561 次浏览
今天这篇给大家分享的知识是“Python struct库怎样用,常用函数有哪些”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Python struct库怎样用,常用函数有哪些”文章能帮助大家解决问题。看到struct这么英文单词,大家应该并不陌生,因为c/c++中就有struct,在那里struct叫做结构体。在Python中也使用struct,这充分说明了这个struct应该和c/c++中的struct有很深的渊源。Python正是使用struct模块执行Python值和C结构体之间的转换,从而形成Python字节对象。它使用格式字符串作为底层C结构体的紧凑描述,进而根据这个格式字符串转换成Python值。
准确地讲,Python没有专门处理字节的数据类型。但由于
b'str'可以表示字节,所以,字节数组=二进制str。而在C语言中,我们可以很方便地用struct、union来处理字节,以及字节和int,float的转换。故提供一个库来做转换。
按format的格式打包v1、v2等参数
import struct
result = [1,2,3,4,5]
print([struct.pack('<B', x) for x in result])
# [b'\x01', b'\x02', b'\x03', b'\x04', b'\x05']
按format的格式解包buffer数据,注意结果是一个数组
import struct
result = bytes.fromhex('10002030000000')
print(struct.unpack('<BHI', result))
# (16, 8192, 48)
上代码是按小端序列进行解析的
10被解析成了16
0020被解析成了 0x00 + 0x20 * 256 = 32*256 = 8192
30000000被解析成了 0x30 + 0x0 * 256 + 0x0 * 16³ + 0x0 * 256² = 48
按format的格式计算这个格式本应该的大小
import struct
print(struct.calcsize('<BHI')) # 7
B是1个字节,H是2个字节,I是4个字节,共7个字节
| Format | C Type | Python | 字节数 |
|---|---|---|---|
| x | pad byte | None | 1 |
| c | char | int | 1 |
| b | signed char | int | 1 |
| B | unsigned char | int | 1 |
| ? | Bool | bool | 1 |
| h | short | int | 2 |
| H | unsigned short | int | 2 |
| i | int | int | 4 |
| I | unsigned int | int | 4 |
| l | long | int | 4 |
| L | unsigned long | int | 4 |
| q | long long | int | 8 |
| Q | unsigned long long | int | 8 |
| f | float | float | 4 |
| d | double | float | 8 |
| s | char[] | bytes | 1 |
| p | char[] | bytes | 1 |
| P | void * | int | 0 |
| Character | Byte order | Size | alignment |
|---|---|---|---|
@ |
native | native | 凑足4个字节 |
= |
native | standard | 不作变化 |
< |
little-endian | standard | 不作变化 |
> |
big-endian | standard | 不作变化 |
! |
network (= big-endian) | standard | 不作变化 |
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python操作excel主要用到xlrd和xlwt两个库,xlrd读取表格数据,支持xlsx和xls格式的excel表格;xlwt写入excel表格数据
这篇文章主要介绍了Python标准库datetime之datetime模块用法分析详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
sys模块:全称system,指的是解释器。常用操作,用于接收系统操作系统调用解释器传入的参数
最小公倍数可用于解决一些问题,因此要关注最小公倍数。在python中怎么求去最小公倍数呢?下面,小编来教教你吧。
这篇文章主要为大家介绍了Python线程同步,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008