Pythonで2進数・8進数・16進数を10進数にする/10進数をformatで2進数・16進数にする
2023.02.18
Python で 2 進数から 10 進数、または 10 進数から 2 進数に変換するには int や format を使います。
- n 進数から 10 進数にするときは int を使う
- 10 進数から n 進数にするときは format を使う
後述するように bin や hex といった関数もありますが、余計なプレフィックスのついた文字列が返るため、実際は format を多用することになるでしょう。
Python で 2・8・10・16 進数を 10 進数にする
2 進数などの数を 10 進数にするときは int 関数を使います。第二引数にもとの進数を指定します。
a = int('1001', 2) # 2進数
b = int('75', 8) # 8進数
c = int('91', 10) # 10進数
d = int('c3', 16) # 16進数
print(a) # 9
print(b) # 61
print(c) # 91
print(d) # 195
2 進数の 1001 は 1 × 8 + 1 = 9 です。8 進数の 75 は 7 × 8 + 5 = 61 となります。
Python で 10 進数を 2 進数にする
10 進数の整数を 2 進数にするには bin を使います。これは Python のビルト・イン関数です。
a = bin(5)
print(a) # 0b101
print(type(a)) # <class 'str'>
bin は 0b というプレフィックスをつけた文字列を返します。
- 文字列が返る
- 0b プレフィックスがつく
6 から 9 までを 2 進数で表示してみましょう。
a = bin(6)
b = bin(7)
c = bin(8)
d = bin(9)
print(a) # 0b110
print(b) # 0b111
print(c) # 0b1000
print(d) # 0b1001
プレフィックスを除きたいときは bin でなく format を使います。
a = format(6, 'b')
b = format(7, 'b')
c = format(8, 'b')
d = format(9, 'b')
print(a) # 110
print(b) # 111
print(c) # 1000
print(d) # 1001
print(type(a)) # <class 'str'>
format も文字列を返しています。
Python で 10 進数を 16 進数にする
10 進数を 16 進数にするときは Python のビルト・イン関数 hex を使います。
a = hex(18)
print(a) # 0x12
print(type(a)) # <class 'str'>
hex は 0x というプレフィックスのついた文字列を返します。
a = hex(15)
b = hex(16)
c = hex(17)
d = hex(18)
e = hex(19)
print(a) # 0xf
print(b) # 0x10
print(c) # 0x11
print(d) # 0x12
print(e) # 0x13
0x が不要のときは format を使います。第二引数に x を指定します。
a = format(15, 'x')
print(a) # f
print(type(a)) # <class 'str'>
いろいろな値で試してみましょう。
a = format(254, 'x')
b = format(255, 'x')
c = format(256, 'x')
d = format(257, 'x')
print(a) # fe
print(b) # ff
print(c) # 100
print(d) # 101
0x のない文字列が出力されています。