【python】2進数・8進数・10進数・16進数の相互変換方法
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
最近のコメント