位置: 编程技术 - 正文

Python中struct模块对字节流/二进制流的操作教程(python struct库)

编辑:rootadmin

推荐整理分享Python中struct模块对字节流/二进制流的操作教程(python struct库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:struct python,python中struct.unpack,python struct模块,python struct模块,python中struct.unpack,python struct库,python struct库,python struct模块,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一些笔记以供快速上手。

注:教程中以下四个名词同义:二进制流、二进制数组、字节流、字节数组

快速上手

在struct模块中,将一个整型数字、浮点型数字或字符流(字符数组)转换为字节流(字节数组)时,需要使用格式化字符串fmt告诉struct模块被转换的对象是什么类型,比如整型数字是'i',浮点型数字是'f',一个ascii码字符是's'。

输出结果如下:

demo1输出结果

详解struct模块

主要函数

Python中struct模块对字节流/二进制流的操作教程(python struct库)

struct模块中最重要的三个函数是pack() , unpack() , calcsize()

struct中的格式化字符串

struct中支持的格式如下表:

Format C Type Python 字节数 x pad byte no value 1 c char string of length 1 1 b signed char integer 1 B unsigned char integer 1 &#; _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer or lon 4 l long integer 4 L unsigned long long 4 q long long long 8 Q unsigned long long long 8 f float float 4 d double float 8 s char[] string 1 p char[] string 1 P void * long  

注1:q和Q只在机器支持位操作时有意思

注2:每个格式前可以有一个数字,表示个数

注3:s格式表示一定长度的字符串,4s表示长度为4的字符串,但是p表示的是pascal字符串

注4:P用来转换一个指针,其长度和机器字长相关

注5:最后一个可以用来表示指针类型的,占4个字节

为了同c中的结构体交换数据,还要考虑有的c或c++编译器使用了字节对齐,通常是以4个字节为单位的位系统,故而struct根据本地机器字节顺序转换.可以用格式中的第一个字符来改变对齐方式.定义如下:

Character Byte order Size and alignment @ native native 凑够4个字节 = native standard 按原字节数 < little-endian standard 按原字节数 > big-endian standard 按原字节数 ! network (= big-endian) standard 按原字节数

使用方法是放在fmt的第一个位置,就像'@5s6sif'

总结

标签: python struct库

本文链接地址:https://www.jiuchutong.com/biancheng/381342.html 转载请保留说明!

上一篇:python使用xlrd与xlwt对excel的读写和格式设定(python3 xlrd)

下一篇:python学习之面向对象【入门初级篇】(python中的面向对象)

  • 金税三期系统的作用
  • 发票签字有什么用
  • 经营性应付项目增加导致现金流量
  • 小规模纳税人预缴税款怎么填申报表
  • 房地产公司的利润怎么分析
  • 进项税额抵扣一般多少
  • 个人垫付费用报销申请怎么写
  • 工会的会费收入如何记账
  • 企业设备安装发票税率为多少?
  • 农村承包土地能卖土吗
  • 维修费增值税怎么开
  • 什么公司不需要融资
  • 安家费要还吗
  • 股东分红纳入社会保险吗
  • 零申报资产总额填注册资本怎么办呢
  • 没有发票的业务财务能挂帐吗
  • 比赛奖金支出计入什么科目
  • 外籍员工家属入境
  • 权益法核算下的顺流交易
  • windows更新下载的文件在哪
  • Win10怎么关闭搜索框
  • 月末汇兑损益怎么算
  • 违约金合同条款怎么写
  • 怎样提取word中的图片
  • 无法设置系统更新的原因
  • 支付拍卖成交金额是多少
  • 重装系统后出现ctrl+alt+del
  • win10如何设置开机声音
  • 免税收入与不征税收入的区别
  • php数组函数面试题
  • 工程审计需要什么条件
  • 我辞职了公积金怎么交
  • yii2框架运行原理
  • php生成时间戳
  • 邮电费什么意思
  • 售后回租融资租赁案例
  • 华硕11代笔记本装win10
  • 2023值得推荐的手机
  • html做超链接
  • 检测费可以抵扣增值税吗
  • 往来款的账务处理
  • 银行的抵债资产会过到银行名下吗
  • 印花税实收资本和资本公积
  • 低值易耗品的
  • 资产减值损失属于什么科目
  • 未开票收入是怎么算的
  • mysql 优化口诀
  • 什么叫非限定性不定方程
  • 外经证预缴税款的附加税所属期写错怎么办
  • 周转材料应该计入什么科目
  • 实收资本(或股本)是什么意思
  • 企业银行存款的流动性强于存货
  • 利息收入记借方还是贷方
  • 行政单位收到银行存款利息的会计分录
  • 营改增后工程项目计价规则也随之发生了改变对还是错
  • 注册公司可以代办吗法人需要到场吗?
  • 凭证上的数字金额怎么填
  • mysql的三种查询方式
  • 通过备份记录获取文件
  • win10 下一代
  • 韩国电脑用什么系统
  • 打造安全稳定
  • freebsd操作命令
  • 如何把xp系统的软件删除
  • mac怎么修改图片格式jpg
  • win32api.exe - win32api是什么进程
  • win10的outlook在哪
  • win8系统蓝屏后无法修复
  • win10的蓝屏界面
  • linux中xargs的含义
  • python脚本代码大全
  • javascript刷新页面的几种方法
  • html伸缩布局
  • viewpager自动滑动
  • 社保申报截止日期每月2023年
  • 为什么要征收城乡土地
  • 钢结构税收政策
  • 公司借款给员工是否合法
  • 个人股权转让是否增值了怎么判断
  • 耕地占用税应该什么时候交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设