优化 - 如何存储"位"在记忆中?

时间:2017-07-04 16:45:36

标签: python python-3.x memory memory-management bit-manipulation

我是Python的新手,我在存储信息时遇到了问题。我的导师'而且我不知道该怎么做。 我有数字0和1的数组,例如

a=[1,1,1,0] 

我知道这个整数,但是他告诉我应该保留它。 我试图将我的变量转换为数字,例如:

a = 14然后ab = bin(14).

但是,当我使用sys.getsizeof()时,ab大于a。 我试图使用bytearray(),但我也不了解它。 我以为我知道计算机是如何工作的,但这让我很困惑。

我该如何保留位?我该怎么用?我应该阅读什么来理解它?以及如何衡量我的变量有多大(sys.getsizeof()可以吗?或者我应该将它写入二进制文件?)。 我们这样做是为了优化内存。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解目标,但这是一个猜测:

def convert(bits):
    val = 0
    for bit in bits:
        val = (val << 1) | bit
    return val

a = [1, 1, 1, 0]
ab = convert(a)
print(ab, bin(ab))  # -> 14 0b1110

存储在ab中的结果是一个Python整数,它具有不同的长度,具体取决于保存数字所需的位数。上面的代码将处理任意数量的位(但你可以限制它)。