Skip to main content
 首页 » 编程设计

python之二进制转十进制(数学方式)

2025年05月04日15pengyingh

如果有一个二进制数: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)