位置: 编程技术 - 正文

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

  • 个体工商户怎么年报
  • 经济补偿影响下份工作吗
  • 固定资产到期账务处理
  • 增值税普通发票和电子普通发票的区别
  • 汽车运输企业付给车主的运费算成本吗
  • 个体户定额交税还用交个税吗
  • 调整企业银行存款账面余额的记账依据是什么
  • 出口退税业务提醒信息包括哪些
  • 长期待摊费用进项税可以一次性抵扣吗?
  • 以旧换新如何确认收入
  • 融资租赁首付款支付给供应商
  • 餐费开专票有什么影响
  • 工资薪金税前扣除比例
  • 招待费多少
  • 实物投资账务处理办法
  • 给别人代付
  • 开具房租发票备注多少
  • 购入设备超过多少才允许一次性扣除
  • 财务兼职怎么算工资
  • 资本公积弥补亏损规定
  • cpu天梯图2022最新排行榜
  • 事业单位自筹基金有哪些
  • 期货和远期
  • 购进土地会计分录
  • php的in_array
  • PHP:pg_lo_import()的用法_PostgreSQL函数
  • 破产资产拍卖
  • macOS Big Sur 11.4 Beta 1(版本号20F5046g)正式发布
  • 八仙花的养殖方法冬季怎么养
  • 债务重组收益的计算
  • php rest api
  • 出现质量问题赔偿标准
  • 悉尼奥林匹克公园
  • 年中建账年初余额怎么录入
  • thinkphp项目怎么部署
  • 域名续费多久生效
  • 采购国产设备退税公告
  • 没有取得发票就把车卖了违法吗
  • 图文详解管道支架制作安装标准
  • 佣金代扣代缴增值税如何计算
  • 企业所得税的征税对象和纳税人分别负有的纳税义务
  • 固定资产报废该怎么处理
  • db2入门
  • 小微企业减免的增值税账务处理
  • 公司购买一辆小型货车
  • 预收账款开票怎么做账
  • 转回小规模
  • 账户与会计科目有什么联系与区别?
  • sql server语句查询
  • win8如何调整电脑屏幕亮度
  • win8的应用商店
  • 64位Vista、Windows7系统IIS连接数据库故障完美解决
  • 师说词类活用
  • centos怎么调出终端
  • mscorsvw.exe是什么进程
  • 苹果Mac系统怎么安装
  • linux gunzip
  • ubuntu下的vivado2022怎么打开
  • win7 64位系统提示"Windows7不能识别网络打印机"的故障原因及解决方法
  • win8安装itunes
  • msworks.exe - msworks是什么进程 有什么用
  • lsaass.exe
  • win8.
  • linux在实际工作中的应用
  • win7打开网页显示证书有问题
  • freebsd连接wifi
  • 怎么理解python
  • 关于学习的名言
  • nodejs xhr
  • python从入门到精通第三版pdf下载
  • javascript data
  • textview hint
  • jquery插件库怎么导入
  • android adt
  • 无偿使用的房屋装修如何摊销
  • 香港企业查询系统
  • 湖北省纳税大户
  • 分公司的总公司
  • 去税务局补缴税款医疗费不带证件可以吗
  • 深圳市百旺信投资有限责任公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设