我有一个只存储1或0的整数数组。在python中是否有直接函数可以执行此操作? 假设数组为[0,1,0,1]则应返回5.
答案 0 :(得分:3)
无法想到单一功能,但以下内容非常简单:
In [60]: val = 0
In [61]: for digit in [0,1,0,1]:
....: val = val * 2 + digit
....:
In [62]: val
Out[62]: 5
编辑:如果速度稍慢,以下单行执行相同的工作:
In [66]: reduce(lambda x,y: 2*x+y, [0,1,0,1,1])
Out[66]: 11
答案 1 :(得分:3)
如果你有效地获得了一个字符串,那么你可以这样做:
>>> a
[0, 1, 0, 1]
>>> int(''.join(str(i) for i in a), 2)
5
>>>
答案 2 :(得分:2)
sum(j<<i for i, j in enumerate(reversed([0, 1, 0, 1])))
答案 3 :(得分:1)
这应该做你想要的:
a_list = [0,1,0,1]
int(''.join(map(str,a_list)), base=2)
答案 4 :(得分:0)
如果您需要在Python中进行位操作,请务必查看此Wiki页面:
http://wiki.python.org/moin/BitManipulation
虽然没有内置功能,但那里提到的库(特别是python-bitstring)可以帮助你。