位置: 编程技术 - 正文

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中的面向对象)

  • 两地发工资个税处理
  • 未认证待抵扣进项税重分类
  • 普通电子发票如何冲红
  • 工资薪金需要缴纳什么税种
  • 京东佣金费用计算公式
  • 哪个税种不需要认定就能在电子税务局申报
  • 税收的六大作用
  • 确认销售收入的重要依据是什么
  • 一般纳税人从小规模纳税人处进货
  • 母子公司间资产划拨开免税发票
  • 出售办公用房要交什么税
  • 个体工商户个人所得税怎么计算
  • 应税服务计入什么科目
  • 所得税季度申报表营业成本怎么填
  • 工程的进项税怎么处理
  • 其他收益期末余额在借方还是贷方
  • 未取得发票怎么做纳税调增操作
  • 雇主全额负担的法律责任
  • 统一社会信用代码证
  • 分公司是否需要章程
  • 远程清卡失败怎么办
  • 本月负数发票大于正数发票 留抵的增值税怎么做账
  • 超市预付卡过了还能退吗
  • u盘中装系统
  • 预付账款为负数能转为应付账款吗
  • 汽车销售公司取名字参考大全图片
  • 如何选购汽车
  • 吸收合并会计处理举例
  • 藏红花 (© Hayami Yanagisawa/Getty Images)
  • 坏账准备怎么做资产负债表
  • 鲜艳的多彩的英文
  • 投资性房地产如何计提折旧
  • yii框架运行原理
  • 印度泰姬陵建筑
  • easyui分页传递表单参数
  • yii2带搜索功能的下拉框实例详解
  • html编写
  • nvm 安装node
  • 命令行改gpt
  • php数据表
  • phpcms安装无法连接数据库服务器
  • 城镇土地使用税减免税政策2023年
  • 耕地里埋坟国家有什么规定
  • 工商年报基本养老保险缴费基数
  • mysql数据库基本操作
  • 所得税汇算清缴账务处理
  • 百旺 税控盘
  • 利润分配转作股本的股利属于什么科目
  • sqlserver数据库安装步骤
  • 分公司注销怎么起诉公司
  • 管理费用应该如何分摊 dcf
  • 净现金流量算残值么
  • 改制后企业是否可以剥离资产管理
  • 工业企业增值税税率
  • sql服务在哪
  • 计算机上没有运行windows无线服务
  • 苹果序列号查询
  • 如何避免在游戏中切输入法
  • ie标签页
  • linux系统中的用户大体可分为三组
  • mac怎样修改用户名
  • win10移动版官网
  • office解压后如何安装
  • 当前用户已注销
  • 怎么防电胖
  • 手机ssh远程连接服务器
  • linux如何快速统计文件个数
  • vncviewer连接linux
  • Linux安装完mysql后提示错误无法登陆mysql怎么办?
  • 如何让w10系统运行更快
  • 批处理程序教程
  • matplotlib pypi
  • unity3ds
  • node.js入门
  • 熟悉的拼音
  • jquery中有几种方法可以来设置和获取样式
  • 日历 caldav
  • 以下关于android应用程序的目录结构描述中,不正确的是
  • 广东省国家税务总局稽查局局长
  • 湖北电子网上税务怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设