位置: 编程技术 - 正文

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

  • 综合所得减除费用标准
  • 金税盘怎么向分行汇款
  • 预缴增值税的附加税
  • 软件企业的工资怎么样
  • 调整凭证分录
  • 发票限额是多少
  • 总资产报酬率计算举例
  • 个体户报税可以朋友代替吗
  • 企业出售房产的账务处理
  • 网上银行转账被骗能追回吗
  • 附加税城建税税率
  • 工程劳务公司的生产销售情况分析
  • 创建上市公司
  • 固定资产已入库款项已付次月开发票何时记提折旧
  • 公司注销其他应收款怎么冲平
  • 小规模投资创业
  • 单位收到社保补贴会计怎样处理
  • 在win7中怎么安转只兼容win10的软件
  • 拨号的用户名
  • 打开软件窗口后如果没有出现属性面板可执行
  • 资产负债表其他流动资产计算公式
  • 收到服务费发票怎么做账
  • 怎样调整以前年度多计的收入
  • 哪些收入需要交消费税
  • 购入股票佣金会减少吗
  • 契税计税依据是成交价还是评估价?
  • php批量处理数据
  • 银行存款账面余额与银行账户余额
  • 资产负债表中其他流动资产包括哪些科目
  • php -a
  • vue组件用法
  • php date()
  • 机械租赁税率是多少?
  • 股东投资款超过注册资金的案例
  • extract php函数
  • 投资款未备注
  • 为客户购买的机票怎么入账
  • 开票软件里税收分类编码在哪更新
  • 企业自产自用的产品需要缴纳增值税吗
  • sql按分隔符截取
  • 公司注销了,账务是不是可以销毁了
  • 小规模增值税申报未开票收入怎么填
  • 出口退税款计入营业外收入
  • 小规模年度企业所得税纳税申报表
  • 生日卡和过节卡一样吗
  • 教育费附加减免性质代码
  • 关于餐饮行业
  • 施工单位结算
  • 软件开发公司账一定按项目做吗
  • 远期支票最长期限
  • 以前年度的银行手续费发票
  • 房地产企业增值税计算
  • 材料报废 开什么发票
  • 会计复式记账法题目
  • mysql优化技巧实战
  • win10有三个系统
  • windows7的内存基本要求
  • windows10的xbox如何录制视频
  • solaris 11.4
  • windows快速预览
  • services.exe是什么文件
  • win8 cmd在哪
  • centos运行程序
  • windows8鼠标没反应怎么办
  • surface准备就绪
  • win10系统组策略怎么打开
  • WIN10开始菜单点不动
  • win10周年版
  • linux的复制
  • python利用matplotlib将扇形平分成50份
  • 模仿文明
  • jquery 属性
  • android Lollipop(5.0)--touch feedback(触摸反馈)
  • JavaScript中length属性的使用方法
  • 异步任务管理器
  • unity ulua
  • jquery鼠标移入
  • python面积
  • 福建社保官方网站
  • 安徽省税务干部学校
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设