广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用Python模块:struct模块
  • 490
分享到

使用Python模块:struct模块

模块Pythonstruct 2023-01-31 01:01:54 490人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python没有提供直接的将用户定义的数据类型和文件io关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) 1)bytes、str

python没有提供直接的将用户定义的数据类型和文件io关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的)


1)bytes、str

bytespython3.x新加的数据类型(在Python2.x中被合并在str)中

这里写图片描述

bytesbyte的序列,而strunicode的序列

bytes通过decode()方法转换为str类型;str通过encode()方法转换为bytes类型

互联网上是通过二进制进行传输,所以就需要将str通过encode()编码成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码

2)bytes()

bytes()是Python3的一个内置函数

英文文档:

class bytes([source[, encoding[, errors]]])

Return a new “bytes” object, which is an immutable sequence of integers in the range 0 <= x < 256. bytes is an immutable version of bytearray – it has the same non-mutating methods and the same indexing and slicing behavior.
Accordingly, constructor arguments are interpreted as for bytearray().

这里写图片描述

准确的讲,Python没有提供专门处理字节的数据类型
但由于b'str_obj'可以表示bytes_obj
所以,字节数组 <=> 二进制str

C语言中,我们可以很方便地用structuNIOn来处理字节,以及字节和intfloat的转换

你可以使用位运算把其他数据类型转换为字节类型

这里写图片描述

但是这样不但操作麻烦,而且就上例而言对于浮点数也无能为力

3)struct模块

在Python中,『一切皆对象』,基本数据类型也不列外

C语言的数组int a[3] = {1, 2, 4};,存储的是真正的值
Python的列表lyst = [1, 2, 4],存储的是元素的指针

这里写图片描述

这就造成了『列表元素的不连续存储』,在Python中列表中的数据可能不会被存储为连续的字节块

为了处理它们,将python值转换为C结构很重要,即将它们打包成连续的数据字节,或者将一个连续的字节块分解成Python对象

struct模块执行Python和以Pythonbytes表示的C结构体之间的转换,这可以用于处理存储在文件中或来自网络连接以及其他源的二进制数据;它使用一定格式的字符串作为C语言结构布局的简洁描述以及到或从Python值的预期转换


struct模块最重要的两个函数就是pack()unpack()方法

打包函数:pack(fmt, v1, v2, v3, ...)

解包函数:unpack(fmt, buffer)

其中,fmt是格式字符(fORMat的谐音),struct模块支持的格式化字符如下表

这里写图片描述

pack()函数

写个文件简单测试

这里写图片描述

这里写图片描述

这里写图片描述

unpack()函数

使用unpack()函数从写好的二进制文件中读出文件

这里写图片描述

这里写图片描述

先用二进制编辑器随便写一个文件

这里写图片描述

然后调用struct模块的unpack()函数读取数据

这里写图片描述

这里写图片描述

可以看到,同样的一个文件读取方式不同,输出的结果也就不同

在文件操作结束后,不要忘了file.close()

--结束END--

本文标题: 使用Python模块:struct模块

本文链接: https://www.lsjlt.com/news/184210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Python模块:struct模块
    Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) 1)bytes、str...
    99+
    2023-01-31
    模块 Python struct
  • python struct模块
    一、简介   了解c语言的人,一定会知道struct结构体在c语言中的作用,它定义了一种结构,里面包含不同类型的数据(int, char, bool等等),方便对某一结构对象进行处理。而在网络通信当中,大多传递的数据是以二进制流(binar...
    99+
    2023-01-31
    模块 python struct
  • 用struct模块实现python so
    最近跳槽到西安一家机器人公司,我们的产品属于教育机器人的范畴,为了增强客户吸引力,引进了一个智能家居公司的产品API接口,让机器人来操作智能家居 该公司的智能家居API是自定义TCP包,即直接在TCP头后面写自定义数据结构: 客户端请求...
    99+
    2023-01-31
    模块 struct python
  • python3中的struct模块使用
    软硬件环境python3struct简介struct是python(包括版本2和3)中的内建模块,它用来在c语言中的结构体与python中的字符串之间进行转换,数据一般来自文件或者网络。常用方法struct模块中的函数函数returnex...
    99+
    2023-01-31
    模块 struct
  • Python struct模块-深入学习
    Python struct模块 用处struct模块中的函数格式化字符串 对齐方式格式符code使用示例Python参考手册struct模块链接 转载请标明出处(http://blog.csdn.net/lis_12/a...
    99+
    2023-01-31
    模块 Python struct
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • Python模块:time模块
    time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一...
    99+
    2023-01-31
    模块 Python time
  • Python中模块的使用--binascii模块用法
    目录binascii模块用法binascii模块和进制转换笔记 Python内置函数binascii模块用法 binascii模块用于在二进制和ASCII之间转换 >...
    99+
    2022-11-11
  • python 安装、配置、使用 xlrd模块、numpy模块、matplotlib、opencv模块
    目录  一、xlrd模块 (一)安装xlrd模块 (二) pycharm 配置xlrd (三) 读取xls格式 (四)xlrd读取时间日期时,会是float类型,需要转换。 二、numpy模块  (一)numpy模块安装---使用清华大学镜...
    99+
    2023-10-23
    python numpy 开发语言
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2022-11-11
  • Python中的sys模块、random模块和math模块
    一、sys运行时环境模块 sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。 用法: sys.argv:命令行参数List,第...
    99+
    2022-11-11
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2022-11-12
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • python加密模块-hashlib模块
    hashlib模块 用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 (sha比md5 更复杂、md5 不能反解) 具体应用:用于网站防篡改。具...
    99+
    2023-01-31
    模块 python hashlib
  • python中os模块和sys模块怎么使用
    今天小编给大家分享一下python中os模块和sys模块怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、os模块o...
    99+
    2023-07-05
  • python os模块和fnmatch模块的使用介绍
    目录一、先介绍一下os模块1、拆分路径的方法介绍2、构建文件路径的方法介绍3、获取文件属性的方法介绍4、判断文件的类型5、文件和目录操作6、修改文件属性和判断文件属性7、遍历目录树二...
    99+
    2022-11-11
  • python使用syslog模块
        syslog模块是在unix环境下工作的模块,不能用于windows,在windows环境下可以使用logging模块。syslog模块可以用于记录系统运行的信息,这个模块提供的方法有,syslog(priority,messag...
    99+
    2023-01-31
    模块 python syslog
  • python winrm模块使用
    使用session方法### import winrm s=winrm.Session('http://10.10.60.14:5985/wsman',auth=('administrator','password')) r=s.run_p...
    99+
    2023-01-31
    模块 python winrm
  • python ipaddress模块使用
    # -*- coding:utf-8 -*- import ipaddress n1 = ipaddress.ip_network('192.0.2.0/28') n2 = ipaddress.ip_network('192.0.2.1/...
    99+
    2023-01-31
    模块 python ipaddress
  • Python时间模块之datetime模块
    目录 简介 函数介绍及运用 date:日期类 1.获取当前时间  2.日期对象的属性 3.date类中时间和时间戳的转换: 4.修改日期使用replace方法  time:时间类  time类操作 datetime:日期时间类 timede...
    99+
    2023-09-12
    python datetime python 日期时间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作