位置: 编程技术 - 正文

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

  • 无住所居民个人所得税的计算
  • 注册税务师报名条件
  • 小规模30万免税是含税还是不含税
  • 收购公司财务怎么交接
  • 股票印花税最新政策2023怎么算
  • 免费的企业
  • 企业所得税申报流程图
  • 固定资产的入账价值怎么计算
  • 虚开增值税发票不能忽略的三个点!
  • 公司房租可以抵多少税
  • 小规模纳税人自己可以开专票吗
  • 工资预支怎么做账
  • 机打发票怎么申请流程
  • 公司注销 缴税
  • 库存股股本属于什么科目,借贷方向
  • linux系统安装浏览器
  • 预征率3%
  • 银行贷款核销后还产生利息吗
  • 非盈利组织捐赠现金支需要什么资料
  • 销售商品发生的现金折扣
  • mac的pdf怎么转换成word
  • 怎么给分区
  • reg.dll是什么
  • 政府的奖励金计入哪个科目
  • 罚款应该计入营业所吗
  • 公允价值变动损益会计处理
  • 购入固定资产后海通融资怎么办
  • 深度学习&故障诊断初学者 - 学习路线
  • 房产税城镇土地使用税申报期限
  • 南极岛在哪
  • svg如何嵌入html5
  • 存货捐赠视同销售的会计分录怎么做?
  • php 安装
  • 微信小程序怎么制作自己的小程序
  • 应收账款的账期是什么意思
  • 管理不善造成的货物损失进项税可以抵扣吗
  • 劳务公司需要缴纳社保吗
  • dedecms转zblog
  • 快递公司的收件员好干吗
  • 单位出租厂房需交税吗
  • 其他权益工具投资
  • 关联企业债资比怎么计算
  • 购买税盘怎么减免申报
  • 企业应缴纳税款
  • 教你如何看懂标签
  • 走账的目的
  • 典当行必须出具当票吗
  • 收到退回货物
  • 资本化费用为什么会减少
  • 企业所得税的税基是什么
  • 公司预支款应注意什么
  • 企业计提坏账准备形成可抵扣暂时性差异
  • 在筹建期间的费用属于什么
  • 代销商品怎么开票
  • 无形资产自行开发
  • 价税分离购销合同模板
  • 进项税额被转出怎么做账
  • 建筑业营改增后税率变化
  • 无票收入怎么报增值税申报表
  • sqlserver bulkcopy
  • 重装机兵
  • sql server存储过程教程
  • Vista、XP、Windows7下非会员如何去除QQ2009的广告
  • windows自动操作软件
  • 如何在ubuntu下安装和配置gcc并用C语言
  • Windowsxp桌面没有图标怎么办
  • linux系统硬盘分区类型
  • html中的表格
  • python进行聚类
  • Android OpenGL ES(九)----构建几何物体
  • [置顶]星陨计划
  • pyqt5编译
  • bootstrap需要学多久
  • 面向对象的程序设计语言是
  • wxpython怎么用
  • 油票增值税专用发票几个点开
  • 长沙税务网站查询系统
  • 开采砂石
  • 税务补录什么时候上班
  • 山东省国税网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设