29

バイナリ入力を 10 進整数に変換する必要があります。10 進数から 2 進数に変換する方法を知っています。

n = int(raw_input('enter a number: '))
print '{0:b}'.format(n)

私は逆方向に行く必要があります。私の教授は、私たちのコードをチェックするとき、 を入力しようとしているので、戻ってくる11001べきだと言い25ました。メモを確認しましたが、これを行う方法がわかりません。Google やその他のインターネット リソースもあまり役に立ちませんでした。

最大の問題は、組み込み関数の使用が許可されていないことです。それらの使用が許可されていない理由は理解していますが、Python には 2 進数から 10 進数への組み込み関数があることを知っているため、この問題がさらに難しくなっています。

4

8 に答える 8

73

intベースを使用して設定できます2(バイナリの場合):

>>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> int(binary, 2)
25
>>>

ただし、そのように使用できない場合はint、いつでもこれを行うことができます。

binary = raw_input('enter a number: ')
decimal = 0
for digit in binary:
    decimal = decimal*2 + int(digit)
print decimal

以下はデモンストレーションです。

>>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> decimal = 0
>>> for digit in binary:
...     decimal = decimal*2 + int(digit)
...
>>> print decimal
25
>>>
于 2014-02-13T21:24:33.017 に答える