2008年10月18日土曜日

Python で二進数、十進数の変換

1. 二進数から十進数へ

Python で、数値を 2 進数から十進数に変換したい。

2.1 組み込み関数 によると、

int([x[, radix]])

文字列または数値を通常の整数に変換します。…
radix 引数は変換の基数を表し、範囲 [2, 36] の整数またはゼロをとることができます。

long([x[, radix]])

文字列または数値を長整数値に変換します。…
radix 引数は int() と同じように解釈され、x が文字列の時だけ与えることができます。

int() 関数を、このような目的で使えることを知らなかった。(@_@;)

例えば、2進数を表す文字列 1010 を、十進数に変更する。

>>> print int('1010',2)
10

 

2. 十進数から二進数へ

十進数から2進数へ変換するには format 関数を使う。

PEP 3101: Advanced String Formatting によると、

In Python 3.0, the % operator is supplemented by a more powerful string formatting method, format(). Support for the str.format() method has been backported to Python 2.6.…

There’s also a format() built-in that will format a single value. It calls the type’s __format__() method with the provided specifier:…

'b' - Binary. Outputs the number in base 2.

Python 2.6 であれば、次のように書ける。例えば、十進数の 10 を、2進数に変換する。

>>> print format (10,'b')
1010

 

GMPY

Binary numbers には

を使った方法が紹介されていた。

 

3. その他

十進法 – Wikipedia によると、

十進記数法は単に十進法と呼ばれることもあるが、これを「10 進法」と書くのは好ましくない。10 が十を意味するのは十進記数法だからであり、例えば二進記数法ならば二を意味する。漢数字にはそのような曖昧さはない。英語でも同様に base 10 より decimal が好まれる。

 

参考サイト

関連記事