如果有一个二进制数:10011100 十进制为 156。
我想用数学方法把二进制变成十进制。
例如: 二进制: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
>>>
我只能找到第一个“1”。
如何找到'1'的所有索引?
请您参考如下方法:
为什么要检索索引?您可以像这样简单地迭代这些位:
num = sum(2**i for i, bit in enumerate(my_str) if bit == '1')
无论如何,如果您喜欢两个单独的步骤,您可以像这样获取索引:
indexes = [i for i, bit in enumerate(my_str) if bit == '1']
num = sum(2**i for i in indexes)
