とある変人のお道具箱

技術系のことにについて幅広く触れていくブログです

【Python】 2進数、8進数、10進数、16進数の変換方法

整数を2進数、8進数、16進数で表記

bin_num = 0b10
oct_num = 0o10
hex_num = 0x10
print(bin_num)   #2
print(oct_num)   #8
print(hex_num)   #16

printで表示させるときには10進数表記にされる
これらは異なる基数で表しているが、整数型に変わりはないので四則演算はいつもどおりにすることが可能

print(0b10 * 0o10 + 0x10)   #32
#すなわち(2*8+16)

   

10進数を2進数、8進数、16進数の文字列に変換

組み込み関数のbin(),oct(),hex()を使い、数値を2進数、8進数、16進数で表された文字列に変換することができる。

bin_str = bin(127)
oct_str = oct(127)
hex_str = hex(127)
print(bin_str)   #0b1111111
print(oct_str)   #0o177
print(hex_str)   #0x7f

   

2進数、8進数、16進数表記の文字列を任意の基数の数値に変換

組み込み関数int(文字列,基数)を使用する。基数を省略したときは10進数とみなされる。

bin_num = int('10',2)
oct_num = int('10',8)
dec_num = int('10')
hex_num = int('10',16)
print(bin_num)   #2
print(oct_num)   #8
print(dec_num)   #10
print(hex_num)   #16

基数に0を指定すると文字列のプレフィックス(0b,0o,0xなどのこと)をもとに自動でN進数なのか判断して変換される。

bin_num = int('0b10', 0)
oct_num = int('0o10', 0)
dec_num = int('10', 0)
hex_num = int('0x10', 0)
print(bin_num)   #2
print(oct_num)   #8
print(dec_num)   #10
print(hex_num)   #16