Skip to main content

一个使用python轻松处理位域的库

项目描述

pybitfield

一个使用python轻松处理位域的库

要求

  • 蟒蛇 3.6、3.7、3.8、3.9

安装

pip install pybitfield

用法

当您构造一个包含 5 个元素的位域时,请执行以下操作。

在这种情况下,最多可以存储 5 位信息。

除非另有说明,否则所有位均为 0。

from pybitfield import Bitfield, BitOrder


number_of_element = 5
bitfield = Bitfield(number_of_element)

如果要设置该位,请执行以下操作。

由于索引是从零开始的,因此运行此代码时存储的位域是01111.

这是大端的情况。

bitfield.set_bit(0)
bitfield.set_bit(1)
bitfield.set_bit(2)
bitfield.set_bit(3)

# Since the number of elements is 5 and the index is zero-based, a total of 5 index from 0 to 4 can be specified.
# bitfield.set_bit(5)

此代码删除第 1 位和第 3 位。

这个结果是00101

bitfield.remove_bit(1)
bitfield.remove_bit(3)

您可以使用is_bit()来确保已设置该位。

bitfield.is_bit(1)  # return False
bitfield.is_bit(2)  # return True

如果要将位域转换为列表类型,可以使用get_bit_list().

位域的索引和列表的索引是对应的。

0 转换为 False,1 转换为 True。

bitfield.get_bit_list()

# [True, False, True, False, False]

如果要反转位域,可以使用swap_bitfield().

参数表示位长度。

如果调用不带参数的方法,则位域中的元素数将应用于返回值的位长。

bitfield.swap_bitfield()
# 20
# 0b10100

bitfield.swap_bitfield(8)
# 160
# 0b10100000

bitfield.swap_bitfield(10)
# 640
# 0b1010000000

如果要将位域转换为字节类型,可以使用get_bitfield_bytes().

您可以使用BitOrder枚举器类来指定位顺序。

如果位域中的元素数量不是 8 的倍数,则将应用可以表示它的最小字节长度。

在这种情况下,位域中的元素数为 5,因此应用字节长度 1。

bitfield.get_bitfield_bytes(BitOrder.big)
# b'\x05'
# 0b00000101

bitfield.get_bitfield_bytes(BitOrder.little)
# b'\xa0'
# 0b10100000

创始人

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pybitfield-1.0.1.tar.gz (9.1 kB 查看哈希)

已上传 source

内置分布

pybitfield-1.0.1-py3-none-any.whl (8.4 kB 查看哈希)

已上传 py3