二进制到十进制(数学方式)

A P*_*der 1 python binary decimal

如果有二进制数:10011100十进制数为156.

我想用数学方法将二进制变为十进制.

例如:binary:10011100

第一个数字为1: 2**7
第四数为1: 2**4
第五数为1: 2**3
第六数为1: 2**2

然后 2**7+2**4+2**3+2**2 = 156

我想,我需要使用string.find()方法.

>>> my_str = '10011100'   
>>> my_str = my_str[::-1]   
>>> print(my_str)   
00111001   
>>> my_str.find('1')   
2   
>>>  
Run Code Online (Sandbox Code Playgroud)

我只能找到第一个'1'.

如何找到'1'的所有索引?

Thi*_*ter 7

为什么要检索索引?您可以简单地迭代这样的位:

num = sum(2**i for i, bit in enumerate(my_str) if bit == '1')
Run Code Online (Sandbox Code Playgroud)

无论如何,如果您更喜欢两个单独的步骤,您可以获得这样的索引:

indexes = [i for i, bit in enumerate(my_str) if bit == '1']
num = sum(2**i for i in indexes)
Run Code Online (Sandbox Code Playgroud)