位置: 编程技术 - 正文

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

  • 农村个体工商户的定义
  • 公司账户钱能全部转走吗
  • 公司注册认缴和实缴的区别
  • 利润表年度报表
  • 兼职是属于劳动报酬吗
  • 电信宽带个人和公司办收费标准
  • 没有报关单可以结汇吗
  • 增值税主表填报说明
  • 土地增值税计税依据
  • 销售滞后是什么行为
  • 超市送现金券怎么做账
  • 核定征收印花税的计税依据是否含税
  • 多开了一张电子发票怎么办
  • 一次性奖金如何交税
  • 业务宣传费和广告费有什么区别
  • 商业承兑汇票背书转让流程图
  • 通讯费补贴入什么科目
  • 资产负债表待摊费用出现负数
  • 利润表中财务费用可以为负数吗
  • 小规模库存商品结转成本太低怎么办
  • 所得税工资薪金允许税前扣除
  • 劳务分包费用组成比例
  • 固定资产报废怎么处理
  • win10通知栏怎么设置
  • php中实现文件上传的函数
  • win11发布时间正式确定
  • mcdlc.exe - mcdlc是什么进程文件 有何作用
  • php deprecated
  • php获取网站内容
  • 公司为员工投保意外险,意外险赔付给谁
  • php写一个简单的单例模式
  • 在计算应纳税所得额时,不允许作为税金项目
  • 没有资质证书的公司可靠吗?
  • 固定资产卡片账自固定资产报废后的保管期限是
  • centos配置php环境
  • 空调年折旧率
  • 猪肉税票怎么开
  • php单态模式简单解释
  • 小规模纳税人的企业所得税税率
  • python爬虫推荐
  • php获取访问者信息
  • 退社保基金怎么办理
  • 认缴出资和实缴出资时间怎么填
  • 客户对账单应该哪个部门做
  • 个税查询和实发工资不符合
  • 工商年报资产状况纳税总额怎么填
  • poi java 导入导出
  • python3 静态方法
  • 银行日记账跨月登记方法
  • 逐期增长量与累计增长量
  • 增值税普票税额可以抵扣税吗
  • oracle sql 不等于某个字符
  • 为什么购买办公用品
  • 转让不动产怎么计算增值税
  • 公司的旅游费怎么处理
  • 小规模纳税人销售自己使用过固定资产
  • 有偿服务职工怎么办
  • 待抵扣进项税额
  • 注销股本对所有股票影响
  • 其他应收款待抵扣税金
  • 企业网银的电子对账未签约需要本人去吗
  • sql server默认实例
  • 正确使用气体钢瓶的原则
  • solaris开放指定端口
  • windows Server 2008配置IE使用代理操作步骤
  • 进程死锁原因
  • xp怎么关闭自启动
  • aow_exe.exe是什么进程
  • vi编辑器是干什么的
  • 电脑死机是啥原因
  • hptlbxfx.exe
  • linux apache怎么启动
  • android sdk platform要安装吗
  • javascript的
  • linux shell命令的返回值
  • 病历证明在医院保存多久
  • 补发上个月的工资怎么做账
  • 四川省国家电子税务局网上申报
  • 网上查询公司营业执照
  • 个人所得税税率怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设