位置: 编程技术 - 正文

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

  • 进项税转出大于进项税,加计抵减怎么计算
  • 一般纳税人附加税优惠政策2023
  • 其他货币资金的科目编码
  • 现金股利缴纳个人所得税
  • 电子承兑被拒付(可拒付追索)
  • 农药增值税减免政策
  • 管家婆未开账可以录入单据吗
  • 营改增后还有企业所得税吗?
  • 科技人员股权奖励
  • 汇算清缴前未取得发票账务处理
  • 怎样查询单位上月社保缴纳情况
  • 手撕票验旧是什么意思
  • 因公出差的人身故怎么办
  • 发票不能开怎么回事
  • 怎么导出全年开奖记录
  • 当进项大于销项需要做账务处理吗?
  • 土地纳税申报表
  • 小微企业必须给员工缴纳哪些保险
  • 企业代扣代缴个人所得税系统
  • 进项发票里的印花税如何做账?
  • 收入是零招待费怎么汇算
  • 固定资产转投资性房地产是会计政策变更吗
  • 会计核算的一般对象
  • 关闭windows defender实时防护
  • linux系统的
  • 欠条和收条,哪个更真实
  • 委托软件开发费用怎么入账
  • PHP:pg_field_table()的用法_PostgreSQL函数
  • 储金会是干什么的
  • 福利企业增值税优惠政策
  • 接受捐赠会计准则
  • 企业在境外发生业务国外缴税后国内怎么做
  • 外贸行业税率
  • 公允价值变动损益和投资收益区别
  • 关于php通用返回的问题
  • uniapp跳转页面没反应
  • 基于stm32的毕业设计
  • 企业对外担保能收担保费吗
  • 国家税务局监制的票还能用吗
  • 帝国cms灵动标签 PHP变量文章ID加减1
  • 网银转账往来款怎么做账
  • 员工工资是哪个会计科目
  • 银行手续费已扣发票未开的账务处理
  • 发票票种核定发票种类怎么选
  • 个税专项附加继续教育如何扣除?
  • 管理费用包括哪些部门
  • 防伪税控技术维护费普通发票怎么申报
  • 高新企业研发收入占总收入比例怎么算
  • 事业单位现金收支流程图
  • 公司员工的电话费可以做费用吗
  • 服务业收入的会计分录
  • 买断式买入
  • 企业购置软件的会计处理
  • 三栏式明细账适用于原材料吗
  • dell bios密码忘记
  • 老毛桃winpe系统对注册表信息进行备份的方法
  • win8系统升级win8.1
  • windows10如何更改管理员账户
  • mac如何重装系统win10
  • 苹果电脑dock栏不见了
  • win10 系统桌面
  • 如何关闭win10自动升级win11
  • windows7使用
  • win7双显示器设置
  • [置顶]电影名字《收件人不详》
  • Unity3D游戏开发毕业论文
  • js获取html自定义属性
  • JS、jQuery中select的用法详解
  • NGUI学习笔记(摘)
  • 详解如何使用pcem安装windows 98 csdn
  • 简单使用23 款华为s E可以吗
  • jquery鼠标点击事件怎么写
  • python写脚本教程
  • java script js
  • 重新加载activity
  • 可以跨区办理税务ukey更换吗
  • 三亚国税局各区领导班子
  • 研发费用加计扣除是什么意思啊
  • 总公司与分公司签订承包协议
  • 浙江省增值税专用发票票样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设