知识点 - struct模块

软硬件环境

  • python3
  • struct

简介

struct是python(包括版本2和3)中的内建模块,它用来在c语言中的结构体与python中的字符串之间进行转换,数据一般来自文件或者网络。

常用方法

struct.pack(fmt,v1,v2,…)

返回的是一个字符串,是参数按照fmt数据格式组合而成。

struct.unpack(fmt,string)

按照给定数据格式解开(通常都是由struct.pack进行打包)数据,返回值是一个tuple

格式符

下面2张表来自官网

实例

理论性的东西看起来都比较枯燥,来个实例代码就容易理解多了。本例来实现往一个2进制文件中按照某种特定格式写入数据,之后再将它读出。相信通过这个理例子,你就能基本掌握struct的使用。

# -*- coding: utf-8 -*-
__author__ = 'cmz'

'''
数据格式为
姓名 年龄 性别   职业
cmz 18  male teacher
'''

import os
import struct

fp = open('test.bin','wb')

# 按照上面的格式将数据写入文件中
# 这里如果string类型的话,在pack函数中就需要encode('utf-8')
name = b'cmz'
age = 18
sex = b'male'
job = b'teacher'

# int类型占4个字节
fp.write(struct.pack('4si6s7s', name,age,sex,job))
fp.flush()
fp.close()

# 将文件中写入的数据按照格式读取出来
fd = open('test.bin','rb')
# 21 = 4 + 4 + 6 + 7
print(struct.unpack('4si6s7s',fd.read(21)))
fd.close()

运行结果

(b'cmz\x00', 18, b'male\x00\x00', b'teacher')

 

例子2

import struct
res = struct.pack('i',1230)
print(res,type(res),len(res))

obj=struct.unpack('i',res)
print(len(obj))
print(type(obj))
print(obj)
print(obj[0]) # 还原回来的是一个数组,且index = 0是数据。索要要取obj[0]

res=struct.pack('i',120000)
res=struct.pack('l',11123230)
print(res,len(res))

 

运行结果

b'\xce\x04\x00\x00' <class 'bytes'> 4
1
<class 'tuple'>
(1230,)
1230
b'\x1e\xba\xa9\x00' 4

 

 

 

转载于:https://www.cnblogs.com/caimengzhi/p/8479932.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值