将0和1的数组转换为整数

时间:2012-12-01 11:45:50

标签: python

我有一个只存储1或0的整数数组。在python中是否有直接函数可以执行此操作? 假设数组为[0,1,0,1]则应返回5.

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)可以帮助你。