【发布时间】:2011-01-10 00:13:53
【问题描述】:
在我目前正在处理的一项作业中,我们需要使用位向量,但我非常不确定如何在 Python 中执行此操作。它们应该能够从 4 位到 20 位。我以前从未使用过位向量,但我想有人会创建您使用通常的 AND/OR/XOR 操作操作的无符号字节数组。
这里的重要限制是:除了标准 Python 提供的库之外,我不能依赖任何库。
我想我知道如何在 C 中使用 8 位无符号字节数组来做到这一点: 例如将清零数组的第 18 位变成一个,我会做类似的事情 my_bit_array[3] &= 1
但是由于 Python 是动态类型的,并且没有内置的数组类型,我该如何以 Python 的方式进行呢?
是否有可能(如何?)表达一个大小为 20 的位向量?我正在考虑制作一个 24 位/3 字节向量并忽略 4 位。
【问题讨论】:
-
依赖外部库有什么问题?
-
@ezod:可能因为这是家庭作业。
-
@S.Lott:是的,这与那个有关,但这部分与那个关系不大。如您所见,我本可以在 C 中做到这一点,但我想知道如何在 Python 中使用语言的内置函数来做到这一点。这是与其他人相关的一般问题。
-
@oligofren:在这种情况下,外部库的建议似乎对您同样有用,假设它们是免费的——您可以查看源代码并了解它们是如何做到的(使用该语言的内置插件)以满足您的学术兴趣。
标签: python bit-manipulation bitarray bitvector