python struct (一)

本文介绍如何使用Python的struct模块进行二进制数据的打包和解包操作,通过具体示例展示了unsigned int类型变量的处理过程及其内存占用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单示例代码如下:

# -*- coding:utf-8 -*-

import struct
import binascii

values = (5, 6, 7)
s = struct.Struct('III')
packed_data = s.pack(*values)
unpacked_data = s.unpack(packed_data)

print('Original values:', values)
print('Format string :', s.format)
print('Uses :', s.size, 'bytes')
print('Packed Value :', binascii.hexlify(packed_data))
print('Unpacked Type :', type(unpacked_data), ' Value:', unpacked_data)
print('packed_data Type :', type(packed_data))

运行结果:

('Original values:', (5, 6, 7))
('Format string :', 'III')
('Uses :', 12, 'bytes')
('Packed Value :', '050000000600000007000000')
('Unpacked Type :', <type 'tuple'>, ' Value:', (5, 6, 7))
('packed_data Type :', <type 'str'>)

Process finished with exit code 0

分析:

元组 (5,6,7)中 5,6,7都是 int 型的

格式’III’是3个 i的大写,

‘I’ 对应 unsigned int ,每个unsigned int 类型变量占用4个字节的内存

将其(5,6,7)打包pack之后,对应的内存实际存储为:

‘050000000600000007000000’

对应:
这里写图片描述

根据该内存分布,可以对应c语言中的结构体:

struct data{
    int a;
    int b;
    int c
};

附:

1.格式化对照表
这里写图片描述

提示:

signed char(有符号位)取值范围是 -128 到 127(有符号位)
unsigned char (无符号位)取值范围是 0 到 255

2.字节顺序,大小和校准
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值