广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python的二进制转化模块如何理解
  • 281
分享到

python的二进制转化模块如何理解

2023-06-22 07:06:48 281人浏览 独家记忆

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

摘要

这篇文章将为大家详细讲解有关python的二进制转化模块如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用

这篇文章将为大家详细讲解有关python的二进制转化模块如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用于打包的pack和用于解包的unpack。

其中,struct.pack的输入格式为struct.pack(fORMat, v1, v2, ...),其中format为格式字符串v1,v2..为将要转成bytes的字符。

例如

>>> import struct>>> struct.pack('i', 15)b'\x0f\x00\x00\x00'>>> struct.pack('iii', 15, 16, 17)b'\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00'>>> struct.pack('b', 255)   #b格式的取值范围是-128到127struct.error: byte format requires -128 <= number <= 127>>> struct.pack('B', 200)b'\xc8'>>> struct.pack('B', 71)    #128以内可用ASCII表示b'G'

i代表int,15对应的二进制代码为F000,故其输出为b\x0f\x00\x00\x00。当格式字符串为iii时,说明要将三个数字以整数类型转化为二进制。

其中,格式化字符串中的每个字符都代表一种数据类型,其中整型相关的字符如下,左侧为带符号整型,右侧为无符号整型

 C语言类型 C语言类型标准大小
bsigned charBunsigned char1
hshortHunsigned short2
iintIunsigned int4
llongLunsigned long4
qlong longQunsigned long long8
nssize_tNsize_t 

其他类型

格式C 类型Python 类型标准大小
x填充字节 
cchar长度为1的字节串 
?_Boolbool1
e float2
ffloatfloat4
ddoublefloat8
schar[]字节串 
pchar[]字节串 
Pvoid*整数 

struct中提供了获取标准大小的函数,calcsize:

>>> struct.calcsize('B')1>>> struct.calcsize('i')4

除了声明被格式化时的数据类型,struct还可以指定对齐方式,例如

>>> struct.pack("i",15)b'\x0f\x00\x00\x00'>>> struct.pack(">i",15)    #小端序b'\x00\x00\x00\x0f'>>> struct.pack("<i",15)    #大端序b'\x0f\x00\x00\x00'

其对应字符的含义分别为

@=<>!
本机本机小端大端网络(大端)

其中默认为@,即本机字节顺序。

在熟悉了pack之后,与之对偶的unpack也就没啥难度了

>>> test = struct.pack("III",125,1255,12555)>>> struct.unpack("III",test)(125, 1255, 12555)

除了packunpackstruct模块还提供了C语言风格的一对函数pack_intounpack_from,二者的声明分别为

struct.pack_into(format, buffer, offset, v1, v2, ...)struct.unpack_from(format, /, buffer, offset=0)

其中buffer表示缓冲流,在pack_into中,将v1,v2...offset的偏置打包入buffer中;在unpack_from中,将buffer中的数据从offset处依次取出。

struct中封装了用于二进制处理的类Struct,按照以往经验,其pack函数的实现方法很有可能是下面这种

def pack(format,*args):    return Struct(format).pack(args)

其中Struct的初始化方法就是输入一个格式化字符串,例如

>>> s = struct.Struct("III")>>> s.pack(1,2,3)b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'

关于python的二进制转化模块如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: python的二进制转化模块如何理解

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

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

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

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

下载Word文档
猜你喜欢
  • python的二进制转化模块如何理解
    这篇文章将为大家详细讲解有关python的二进制转化模块如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用...
    99+
    2023-06-22
  • 详解python的二进制转化模块
    在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用于打包的pack和用于解包的unpack。 其中,struct.pack的输入格式为struct.pa...
    99+
    2022-11-12
  • python二进制转换模块的具体用法
    在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用于打包的pack和用于解包的unpack。 其中,struct.pack的输入格式为struct.pa...
    99+
    2022-11-12
  • Python二进制转化为十进制数学算法详解
    目录PythonPython二进制Python十进制Python二进制转化为十进制数学算法在python中可以通过内置函数int()函数进行二进制转十进制;int()函数可以将一个指...
    99+
    2023-01-06
    Python二进制转化为十进制 Python进制转化 Python二进制转化
  • php十进制如何转化为二进制
    本文小编为大家详细介绍“php十进制如何转化为二进制”,内容详细,步骤清晰,细节处理妥当,希望这篇“php十进制如何转化为二进制”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在PHP中,可以利用decbi ...
    99+
    2023-06-29
  • python如何把文件转化为二进制流
    在Python中,可以使用`open()`函数以二进制模式打开文件,并使用`read()`函数将文件内容读取为二进制数据。以下是一个...
    99+
    2023-09-26
    python
  • 如何理解JavaScript模块化
    目录1. 浏览器支持2. export 导出模块3. import 导入模块4. 创建模块对象5. export import 中转站6. 动态加载模块1. 浏览器支持 使用Java...
    99+
    2022-11-12
  • 如何理解Node.js模块化
    本篇内容主要讲解“如何理解Node.js模块化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Node.js模块化”吧!正文在Node.js中,内置了两个...
    99+
    2022-10-19
  • JavaScript 模块化如何理解
    这期内容当中小编将会给大家带来有关JavaScript 模块化如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:1.概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并...
    99+
    2023-06-22
  • python如何将数字转换为二进制
    可以使用内置函数`bin()`将数字转换为二进制。示例代码如下:```pythonnum = 10binary_num =...
    99+
    2023-08-24
    python
  • Python的类与模块化怎么理解
    这篇文章主要介绍“Python的类与模块化怎么理解”,在日常操作中,相信很多人在Python的类与模块化怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python的类与模块化怎么理解”的疑惑有所帮助!...
    99+
    2023-06-22
  • 如何理解Go语言的模块化
    本篇内容介绍了“如何理解Go语言的模块化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境变量学习 go 语言的第一步,当然是安装以及环境变...
    99+
    2023-06-15
  • Python中struct模块对字节流/二进制流的操作教程
    前言 最近使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一些笔记以供...
    99+
    2022-06-04
    字节 模块 操作
  • Python如何实现图像的二进制与base64互转
    这篇“Python如何实现图像的二进制与base64互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现图...
    99+
    2023-06-29
  • 如何解决十进制到二进制之前的转换精度问题
    这篇文章主要为大家展示了“如何解决十进制到二进制之前的转换精度问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决十进制到二进制之前的转换精度问题”这篇文...
    99+
    2022-10-19
  • 使用Python内置的模块与函数进行不同进制的数的转换
    binascii 模块: 它包含一个把二进制数值转换成十六进制的函数,同样也可以反过来转。 #binary_value是二进制数值不是字符串,也不是int型的1010 binascii.b2a_he&#...
    99+
    2022-06-04
    函数 模块 Python
  • 如何理解python接口自动化之logging日志模块
    目录一、logging模块介绍二、日志等级三、日志收集器四、日志处理器五、日志过滤器六、日志格式器七、日志滚动八、模块封装一、logging模块介绍 ​前言:我们之前运行代码时都是将日志直接输出到控制台,...
    99+
    2022-06-02
    python 接口自动化 python logging
  • 如何进行CSS预处理语言的模块化
    这篇文章给大家介绍如何进行CSS预处理语言的模块化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。编写css是前端工作中,一项普通而又频繁的劳动,由于css并不是一门语言,所以在程序设计...
    99+
    2022-10-19
  • js二进制数据及其互相转化如何实现
    这篇文章主要介绍“js二进制数据及其互相转化如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js二进制数据及其互相转化如何实现”文章能帮助大家解决问题。file在js中有很多二进制数据,有fi...
    99+
    2023-07-05
  • Python语法中的Module模块该如何理解
    Python语法中的Module模块该如何理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、定义包含一系列数据,函数,类的文件,通常以.py结尾二、作用让一些相关的数据,函...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作