位置: 编程技术 - 正文

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

  • 旅游业成本交税会计分录怎么做
  • 劳务派遣人员的工资计入什么科目
  • 赔偿给客户的货财务怎么处理
  • 小规模季报利润表本月金额和本年累计金额
  • 不同月份的发票能抵扣吗
  • 劳务公司涉及的税收
  • 测试收入的钱怎么用
  • 债务担保属于或有资产吗
  • 公司基本户如何注销
  • 企业撤资的所得税处理
  • 应付票据的处理
  • 坏账已核销
  • 物流辅助服务属于什么项目
  • 印花税的计税依据怎么算公式
  • 公司承揽员工租房个税如何入账?
  • 补充养老保险税收规定扣除率
  • 营业额500万以上税率
  • 存款利息收入是免税还是不征税
  • 当月增加的投资性房地产当月提折旧吗
  • 公司收到纸质承兑不开票行吗
  • 分期收款销售的核算中发出商品时借什么账户
  • 企业收到票据时应以什么入账
  • 资产负债表日后调整事项会计处理
  • 投资收益填在经营所得申报表的哪里
  • 跨年如何冲减预提费用?
  • 生产的废料怎么做账
  • 电子商务如何做账
  • 促销礼物
  • packethsvc.exe - packethsvc是什么进程 有什么用
  • 政策性退税流程
  • Linux系统中怎么定位到java代码的方法级
  • 成本法转为权益法属于会计政策变更吗
  • 工业企业应付账款周转率多少合适
  • STP详解
  • 安装windows(install windows)
  • ai图片生成矢量图
  • windowlocation用法
  • css中文字垂直排列
  • 工业企业采购部工资计入什么科目
  • 个税赡养老人专项扣除 多人
  • 税金及附加包括哪些
  • 辞退员工福利
  • 营改增后发票管理办法
  • 应收款需要平行公司吗
  • 什么时候计提所得税费用会计分录
  • 小规模纳税人运输费计入什么科目
  • sql怎么查询个数
  • 未达起征点增值税申报表怎么填
  • 应收利息和应收股利属于什么科目
  • 材料暂估入库的账务处理
  • 通货紧缩的影响简答题
  • 人力成本费用率和人工成本利润率
  • 企业中征码怎么查询
  • 年度损益调整的会计分录
  • 安装设备是干嘛的
  • 如何设置存货计价方法有哪些
  • mysql怎么复制粘贴语句
  • sqlserver 查看表
  • win7系统计算机管理功能打不开
  • debian和ubuntu命令一样吗
  • 在Linux系统中安装MySQL
  • linux中符号连接文件是什么意思
  • ubuntu系统怎么安装微信
  • win7隐藏文件怎么调出来
  • win8怎么设置
  • Ubuntu12.04(X86_64)上安装Mesa-8.0.4
  • js 高级技巧
  • javascript提交数据
  • node.js wss
  • jQuery插件开发
  • jquery动态添加样式
  • python中读取文件
  • javascript的理解
  • 怎么关闭android
  • 辽宁取暖补贴发放标准2020
  • 海关快递怎么上门寄件
  • 税法查询系统
  • 企业租赁房屋需要预缴增值税吗
  • 税务申报按季度申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设