以前書いた記事の逆向きの操作が必要になったのでそのメモです。
参考: Pythonの数値を2進法、8進法、16進法の表記に変換する
結論から言うと int
メソッドでできます。
そのまま数字として解釈できる文字列(要するに0から9と+-)しか受け付けないと思い込んでいたのですが、
ドキュメントを読んでみると、2つ目の引数baseで、基数を指定できます。
ここに8なり16なりを渡してあげれば良いようです。
print(int("FF", 16))
# 255
print(int("100", 8))
# 64
base は 0と2~36までの引数を指定できます。(1はダメ)
36進法は 0~9までの数値と、a~z(A~Zでも可)の文字を使った表記ですね。
print(int("AZ09", 36))
# 511929
base=0 を指定した場合、文字列の先頭のプレフィックスを使って、2進法,8進法,10進法,16進法を判定するようです。
# 2進法
print(int("0b100", 0))
# 4
# 8進法
print(int("0o100", 0))
# 64
# 10進法
print(int("100", 0))
# 100
# 16進法
print(int("0x100", 0))
# 256