1

2進数がある場合:1001110010進数で156です。

数学的な方法で2進化10進数を作成したいと思います。

例:バイナリ:10011100

最初の数字は1: 4番目の数字は1 2**7
2**4
5番目の数字は1: 2**3
6番目の数字は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'のすべてのインデックスを見つける方法は?

4

3 に答える 3

7

なぜインデックスを取得したいのですか? 次のようにビットを単純に反復できます。

num = sum(2**i for i, bit in enumerate(my_str) if bit == '1')

とにかく、2 つの別々のステップを好む場合は、次のようにインデックスを取得できます。

indexes = [i for i, bit in enumerate(my_str) if bit == '1']
num = sum(2**i for i in indexes)
于 2013-01-31T16:32:13.427 に答える
1

int()基本引数を取る組み込み関数を確認することもできます。

int(x[, base]) -> integer

In [1]: my_str = '10011100'

In [2]: int(my_str,2)
Out[2]: 156
于 2013-01-31T16:47:11.107 に答える