Pythonで2進数変換と文字列の扱い

Pythonで2進数から10進数に変換したりその逆を書きたかったので調べました。リストの10進数を2進数にしたり、そのリストに入った2進数を10進数に戻したりするときに必要だったのでメモとして残します。

組み込み関数を使うと

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

このように変換することができる。

文字列とリストの変換については

# 文字列の場合
orig = "hello"
li   = list(orig)   # 文字列 => リスト
text = "".join(li)  # リスト => 文字列
print li    # ['h', 'e', 'l', 'l', 'o']
print text  # hello
 
# 数値の配列の場合
nums = [1,2,3,4,5]
text = "".join(map(str, nums))  # リスト => 文字列
li   = list(map(int, text))     # 文字列 => リスト
print li    # [1, 2, 3, 4, 5]
print text  # 12345

このようになる。
また、2進数に変換するときに桁数を揃えたい場合は書式指定を使う。

"{0:0>4}".format(binary)

4ビットで揃えたい場合などに使える。