【python】2進数・8進数・10進数・16進数の相互変換方法

2020年6月1日

pythonの標準の関数でn進数を変換する関数が存在します。
これらの関数は10進数を起点になっています。
2進数から10進数に変換することは一回の計算で変換可能です。
2進数から16進数に変換するときは、2進数→10進数→16進数と一度10進数を経由して変換する必要があります。

2,8,16進数から10進数に変換する方法

int関数を使用して第1引数に変換したい値、第2引数に進数の値を渡します。

#2進数から10進数
【10進数】 = int( 【2進数(str型)】, 2 )

#8進数から10進数
【10進数】 = int( 【8進数(str型)】, 8 )

#16進数から10進数
【10進数】 = int( 【16進数(str型)】, 16 )

10進数から2,8,16進数に変換する方法

それぞれに専用の関数が存在します。importの必要はありません。

#10→2進数表示
【2進数】 = bin(【10進数】)

#10→8進数表示
【8進数】 = oct(【10進数】)

#10→16進数表示
【16進数】= hex(【10進数】)

2進数から10進数に変換する

num = int( "0b11111111", 2 )
print(num)  #255

num = int( "10", 16 )
print(num)  #16

8進数から10進数に変換する

num = int( "0o77" ,8 )
print(num)   #63

num = int( "10", 8 )
print(num)   #8

16進数から10進数に変換する

num = int( "0xFF", 16 )
print(num)   #255

num = int( "ff", 16 )
print(num)   #255

10進数から2,8,16進数に変換する

#10→2進数表示
print( bin( num ) ) #0b1111

#10→8進数表示
print( oct( num ) ) #0o17

#10→16進数表示
print( hex( num ) ) #0xf

【余談】36進数から10進数に変換する

これまでの内容でint関数の第2引数を操作することでn進数の変換が可能であることがわかる。
そこで一つ疑問が生まれる。
この関数は何進数まで対応しているのかと。。

結果として36進数まで対応しています。
0から9とAからZまでの使用して表現されます。

実際に36進数から16進数に変換したプログラムが下記になる。

num = int( "Z", 36 )
print(num) #35

num = int( "10", 36 )
print(num) #36

num = int( "ZZ", 36 )
print(num) #1295