简介

小贴士

Construct库目前分为两大版本:Version 2.5.5 和 Version 2.8。

2.5版本是老版本,现在基本不维护了。2.8版本是2016年9月份发布。在API接口和实现上有着重大的改变。字段是无命名的,而且操作符/ >> []被用于创建结构体(Struct),序列(Sequences)和范围(Ranges)。

Construct是一个强大的描述式解析和构建二进制数据库。

几个重要的原始结构:

Fields:原始字节或数字类型

Structs and Sequences:将简单,基本的结构组装成更加复杂的结构

Bitwise:提供字节的build和sparse接口,针对bit-string

Adapters:改变数据的展现形式

Arrays/Ranges:重复的结构

Meta-constructs:使用context(history)去计算数据的大小

If/Switch:branch the computational path based on the context

On-demand(lazy) parsing: 读取与解析,在你需要的时候

Pointers:指针

思考

核心任务

二进制的数据处理怎么存在两个大的需求:一个是构建(build),有时也称为编码(encode);另一个就是解析(parse),有时也称为解码(decode)。

处理基础

对于python这种高级语言,对内存的操作是很有限的,基本是面对的字节进行,即8个bit。这样面对的对象,就有基本对象就有两种形式。

Byte-string(字节流)

Bit-string(位流)

bit-string在python中的处理其实也是转换成Byte-string进行的。

二进制处理的本质是什么

把一个byte-string或者bit-string按照一定的格式进行划分,翻译。

类详解

Bitwise与Bytewise

怎么去理解这两个类呢?

直白点说,这两个转换类,就是byte-string 与 bit-string之间的桥梁,可以理解成一种等价变换的关系。

传递过程:byte--->bit 把基于字节的输入转为bit-string,长度要能对应上。

例1

from construct import *

# 输入是正常的的整数,内部类是bit-string,所以需要经过Bitwise转换

d = Bitwise(BitsInteger(8))

d.build(255)

# 输出:'\xff'

传递过程:bit--->byte

例2

from construct import *

# bit--->byte,外是bit-string对应内部的byte,长度由内部决定

d = Bytewise(Byte)

d.build(2)

#输出:'\x00\x00\x00\x00\x00\x00\x01\x00'

打开App,阅读手记

python construct_python--二进制处理之construct库相关推荐

  1. python 离线下载和安装第三方库 .whl wheel 文件

    python 离线下载和安装第三方库 .whl wheel 文件 下载 .whl 文件 pip download \--only-binary=:all: \ # 对于包以及包的依赖包,都不使用二进制 ...

  2. Python 网络爬虫笔记1 -- Requests库

    Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...

  3. Python 开发者的 6 个必备库

    无论你是正在使用 Python 进行快速开发,还是在为 Python 桌面应用制作原生 UI ,或者是在优化现有的 Python 代码,以下这些 Python 项目都是应该使用的. Python 凭借 ...

  4. Python和二进制(1)

    一直对这个二进制以及python的处理方式有些模糊.综合查找到资料,理了一遍,清楚了很多. 什么是二进制数据?二进制文件?二进制文件和文本文件的区别 解释1: 这里谈谈文本文件与二进制文件以及C语言读 ...

  5. Python学习第九篇:zipfile 库操作压缩包

    ​ Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...

  6. 学习Python要知道哪些重要的库和工具

    本文转自:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具. ...

  7. Python+审计实务与案例分析库 毕业设计-附源码211526

    Python审计实务与案例分析库 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识 ...

  8. python下二进制流文件转二维码

    python下二进制流文件转二维码 之前做过的一个ctf中的misc,经过一系列操作得到一个flag.txt 里面是一串二进制流 突然束手无策 经简单计算 260^2=67600 所以尝试能否转化为一 ...

  9. 在Ubuntu 16.04.5 LTS上利用python 2.7版本的pillow库拼接近千张图片实录

    缘由 这两年网上出现了使用python中的PIL或是pillow库拼接图片和朋友圈图像的例子,让我非常感兴趣,比较典型的是这几个例子: <朋友圈的朋友们,你们终于可以互相看到了> < ...

最新文章

  1. Java学习笔记20
  2. LeetCode House Robber II(动态规划)
  3. Netty原理三:NioEventLoop如何处理客户端连接
  4. c++ pat 乙级 -------1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
  5. Python的魔法方法 .
  6. Java数组实现五子棋功能
  7. LightOJ1234 Harmonic Number
  8. 回顾2007展望2008
  9. springboot - 应用实践(N)使用springboot内置的@Scheduled
  10. 明解c语言第7章答案,明解C语言 入门篇 第六章答案
  11. 红帽linux挑战赛题目,红帽Linux挑战赛模拟题
  12. 线性代数笔记4.4(二)非齐次线性方程组解的结构
  13. unity code之FBX模型导入与渲染
  14. mysql主键约束(primary key)
  15. HDU 4826Labyrinth(dp)
  16. 《Java并发编程的艺术》读书笔记三
  17. 【图片新闻】美海军的下一艘战舰与“祖姆沃尔特”DDG-1000极其相似
  18. 谭民机器人_中国科学院大学
  19. 小波变换之尺度函数和小波函数
  20. java线程池介绍(一)

热门文章

  1. c语言实验大整数,C语言编写大整数.doc
  2. 如何去掉网页复制到word后的黑(或灰)背景色
  3. 接纳自己会不会使人“不求上进”?[爱自己]到底是什么意思
  4. 减半行情会不会来?有何投资机会?2020-03-11
  5. 对抗式主动学习三部曲(GAAL 、VAAL、TA-VAAL)---入内不亏
  6. web页面跳转:当前窗口/新窗口
  7. linq where 中两个条件
  8. 去癌-计算模拟-分子动力学-01
  9. 有关金书中正练九阴真经和逆练九阴真经的感悟
  10. 基于ChatGPT的新一代辅助编程神器——Cursor