位置: 编程技术 - 正文

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万交税
  • 企业所得税弥补亏损年限
  • 股权出让需要交税吗
  • 销售报废车辆按多少计提销项税额
  • 营改增计算举例
  • 个体定税标准
  • 提现的现金支票是什么
  • 股权转让怎么缴纳个人所得税
  • 股权收益需要缴增值税吗
  • 电子发票财务怎么操作
  • 货物入库会计分录怎么做
  • win7文件打开方式怎么恢复以前
  • 五险一金个人缴纳部分
  • win7电脑怎么开
  • 企业收到科技创新发票
  • 苹果如何保护
  • 工资里的其他应收款是什么
  • php mb_convert_encoding
  • 广告公司的设计师多少钱一月
  • php字符串定义
  • 委托去银行办理业务的委托书
  • vue中如何使用weboffice
  • 跨国并购融资问题
  • php缓存原理
  • 北极光下的众神图片
  • 浅谈php中类和对象的区别
  • 会计期初余额和期末余额计算公式
  • command对象可以执行sql语句吗
  • 语义分割用途
  • uncompressing
  • shapecfg命令 管制网络设备的流量
  • series转换为dataframe
  • 若依idea
  • 食品财务走账
  • 脚手架租赁费用超过购买价格
  • 农产品购进时的会计分录
  • 准予从销项税额中扣除的有哪些
  • 电脑访问另一台电脑访问权限
  • 盈利能力还有什么能力
  • 兼职会计的工资需要开发票吗
  • 当月未开票收入八百万
  • 加班打车费用计入什么科目
  • 收到的现金货款转到公户备注往来款可以吗
  • 只有发票没有银行回单怎么做账
  • 支付快递费怎么做账
  • 预存返利骗局
  • 发现以前年度假期不满
  • 税金及附加有啥
  • 其他流动资产为什么包括应交增值税
  • 固定资产一次性扣除账务处理
  • 苹果的mac系统
  • centosgui
  • centos7 login账号
  • srvload.exe - srvload是什么进程
  • win10系统怎么关闭病毒防护
  • linux d
  • linux中vi编辑器怎么使用
  • windows7压缩文件图标
  • node.js server-side
  • jquery使用jsonp
  • jquery绑定事件和移除事件
  • 在dos下运行
  • yarn功能
  • javascript初学者书籍
  • python 二叉堆
  • jquery.ztree中文api
  • android电池优化设置
  • javascript编程技术
  • 视频号带货个人和个体工商户的区别
  • ppr管材税收编码
  • 税务局电子化
  • 赞美税务干部对联大全集锦
  • 办公室租金可以开专票抵扣进项税吗
  • 江苏税务局人工电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设