人性化地处理二进制数据:Bitstream

Bitstream是一个python的第三方库,以位流的形式管理二进制数据:

如果你需要处理现在已知的二进制文件格式、设计自己需要的二进制格式、或探索数据压缩算法等等,但python标准库满足不了你的需要,这个时候可以试试Bitstream。可以查看example applications是否满足你的需求。主要特征有以下几个方面。

易于使用

位流是一个简单的抽象概念,其行为就像交流频道。只能在一端写入数据,在另一端读取数据。使用这个库,只需要知道如何创建流,写入,读取就可以了。

这个简单的管理二进制数据的方法可以满足绝大部分使用需求。比python标准库中处理此类任务的struct和array更简单。

在位和字节的级别工作

压缩编码(例如霍夫曼编码)并不总是以全部字节数来表示数据。由于位流支持位而不仅仅是字节,所以代码可以使用相同的API来实现。比如一个自然数的序列的一元编码只需要几行。

支持python和numpy数据类型

Bitsteam内置对标准二进制输出的常用数据类型的支持:布尔值、字节、固定宽度的整型,浮点整型。

Numpy数组可以很方便的处理同类数据序列:

更多细节请查看Built-in types

高级特性

性能. Bitsteam是一个C语音扩展的python模块,由Cython语音和编译器来生成,已经对常用需求进行了优化。希望它的速度能满足您的需求。

自定义数据类型.受支持的类型和二进制表示的列表可以随意扩大:新的读者和编写者可以实现和关联特定的数据类型。请查看Custom types.

快照.有时候,比如当需要查看流而不消耗其内容时,流这个方法就太过简单。快照是解决这类问题的流模型的一个扩展,因为它可以提供一个‘时光机’来将流恢复到一个较早的状态。请查看Snapshots.

开源

Bitstream在MIT license下分发,开发及发布分别在GitHub和PyPI上。

英文原文:http://boisgera.github.io/bitstream/

译者:Chris

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180317A08JZX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券