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'的所有索引?
为什么要检索索引?您可以简单地迭代这样的位:
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)