Pythonにおいて、2進数・16進数と10進数を変換する方法について紹介します。
本記事では、以下の内容を紹介しています。
この記事で分かること
- 10進数を、2進数・16進数の文字列として変換する方法
- 10進数を、2進数・16進数の文字列として0埋めして変換する方法
- 2進数・16進数を、10進数の数値として変換する方法
- 2進数と16進数を相互変換する方法
- 2進数・16進数の計算例
- 【補足】プレフィックス(0b、0x)を用いて、2進数・16進数を記述
スポンサーリンク
10進数を、2進数・16進数の文字列として変換する方法
10進数を、2進数・16進数の文字列として変換する方法を紹介します。
10進数を、2進数・16進数の文字列に変換する方法として、以下の4つの方法を紹介します。
- 組み込み関数bin( )、hex( )を用いて変換
- 組み込み関数format( )を用いて変換
- 文字列メソッドformat( )を用いて変換
- f文字列(f-strings)を用いて変換
それぞれの方法について、順番に紹介します。
組み込み関数bin()、hex()を用いて変換
組み込み関数bin( )、hex( )を用いて、10進数を2進数・16進数に変換する方法を紹介します。
bin( )は、数値型の10進数を、文字列型の2進数に変換します。
同様に、hex( )は、数値型の10進数を、文字列型の16進数に変換します。
以下、サンプルコードです。
num_dec = 11
num_bin = bin(num_dec)
num_hex = hex(num_dec)
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 0b1011
print(num_hex)
# 0xb
プレフィックスついた文字列が返されていることが分かります。
2進数のプレフィックス:0b
16進数のプレフィックス:0x
組み込み関数format()を用いて変換
組み込み関数format( )を用いて、10進数を2進数・16進数に変換する方法を紹介します。
format( )関数の第二引数に、'b'を指定すると2進数、'x'を指定すると16進数に変換できます。
以下、サンプルコードです。
num_dec = 11
num_bin = format(num_dec, 'b')
num_hex = format(num_dec, 'x')
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 1011
print(num_hex)
# b
プレフィックスの無い文字列が返されます。
第二引数に、'#'を付与することで、プレフィックス付きの文字列を取得できます。
以下、サンプルコードです。
num_dec = 11
num_bin = format(num_dec, '#b')
num_hex = format(num_dec, '#x')
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 0b1011
print(num_hex)
# 0xb
スポンサーリンク
文字列メソッドformat()を用いて変換
文字列のメソッドであるformat( )を用いても、10進数を2進数・16進数に変換できます。
文字列の置換フィールド内に、':b'を指定すると2進数、':x'を指定すると16進数に変換できます。
以下、サンプルコードです。
num_dec = 11
num_bin = '{:b}'.format(num_dec)
num_hex = '{:x}'.format(num_dec)
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 1011
print(num_hex)
# b
プレフィックスの無い文字列が返されます。
前述のformat( )関数の場合と同様に、'#'を付与することで、プレフィックス付きの文字列を取得できます。
num_dec = 11
num_bin = '{:#b}'.format(num_dec)
num_hex = '{:#x}'.format(num_dec)
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 0b1011
print(num_hex)
# 0xb
f文字列(f-strings)を用いて変換
f文字列を用いて、10進数を2進数・16進数に変換する方法を紹介します。
f文字列は、Python3.6以降から使用できます。
文字列の置換フィールド内の変数の後に、':b'を指定すると2進数、':x'を指定すると16進数に変換できます。
以下、サンプルコードです。
num_dec = 11
num_bin = f'{num_dec:b}'
num_hex = f'{num_dec:x}'
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 1011
print(num_hex)
# b
プレフィックスの無い文字列が返されます。
前述のformat( )の場合と同様に、'#'を付与することで、プレフィックス付きの文字列を取得できます。
num_dec = 11
num_bin = f'{num_dec:#b}'
num_hex = f'{num_dec:#x}'
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 0b1011
print(num_hex)
# 0xb
スポンサーリンク
10進数を、2進数・16進数の文字列として0埋めして変換する方法
10進数を、2進数・16進数の文字列として0埋めして変換する方法について紹介します。
例として、format( )関数を用いて紹介します。
書式として、'04'のように桁数を指定することで、0埋めすることができます。
以下、4桁の2進数・16進数に変換するサンプルコードです。
num_dec = 11
num_bin = format(num_dec, '04b')
num_hex = format(num_dec, '04x')
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 1011
print(num_hex)
# 000b
4桁になるように、0埋めされた文字列が返されます。
プレフィックス付きの0埋め
プレフィックスをつけて0埋めする方法を紹介します。
桁数を指定する場合は、プレフィックス分を考慮する必要があります。
例えば、4桁の2進数を取得したい場合は、プレフィックス分を考慮した'06'を指定します。
以下、サンプルコードです。
num_dec = 11
num_bin = format(num_dec, '#06b')
num_hex = format(num_dec, '#06x')
print(type(num_bin))
# <class 'str'>
print(type(num_hex))
# <class 'str'>
print(num_bin)
# 0b1011
print(num_hex)
# 0x000b
スポンサーリンク
2進数・16進数を、10進数の数値として変換する方法
2進数・16進数を、10進数の数値として変換する方法について紹介します。
組み込み関数int( )を用いることで、文字列型の2進数・16進数を整数型の10進数に変換できます。
int( )の第二引数に、基数を指定します。
以下、サンプルコードです。
num_bin ='1011'
num_hex ='000b'
print(type(int(num_bin, 2)))
# <class 'int'>
print(type(int(num_hex, 16)))
# <class 'int'>
print(int(num_bin, 2))
# 11
print(int(num_hex, 16))
# 11
プレフィックスがついている場合でも変換できます。
num_bin ='0b1011'
num_hex ='0x000b'
print(int(num_bin, 2))
# 11
print(int(num_hex, 16))
# 11
プレフィックスがある場合は、プレフィックスをもとに変換されるため、基数を0としても変換できます。
num_bin ='0b1011'
num_hex ='0x000b'
print(int(num_bin, 0))
# 11
print(int(num_hex, 0))
# 11
2進数と16進数を相互変換する方法
2進数と16進数を相互変換する方法について紹介します。
2進数と16進数を直接変換する方法がないため、int( )関数を用いて整数型に変換したあとに、再度bin( )、hex( )やformat関数で変換します。
以下、2進数から16進数に変換するサンプルコードです。
num_bin ='0b1011'
num_dec = int(num_bin, 2)
print(num_dec)
# 11
num_hex = format(num_dec,'#06x')
print(num_hex)
# 0x000b
以下、16進数から2進数に変換するサンプルコードです。
num_hex ='0x000b'
num_dec = int(num_hex, 16)
print(num_dec)
# 11
num_bin = format(num_dec,'#06b')
print(num_bin)
# 0b1011
スポンサーリンク
2進数・16進数の計算例
2進数・16進数の計算を行う方法を紹介します。
int( )関数を用いて整数型に変換することで、2進数・16進数の計算が可能です。
以下、2進数同士の足し算を行うサンプルコードです。
num1_bin ='0b1011'
num2_bin ='0b0100'
num1_dec = int(num1_bin, 2)
print(num1_dec)
# 11
num2_dec = int(num2_bin, 2)
print(num2_dec)
# 4
result_dec = int(num1_bin, 2) + int(num2_bin, 2)
print(result_dec)
# 15
result_bin = format(result_dec,'#06b')
print(result_bin)
# 0x1111
【補足】プレフィックス(0b、0x)を用いて、2進数・16進数を記述
2進数・16進数は、整数型にプレフィックスを付けても記述可能です。
'0b'を付与すると2進数、'0x'を付与すると16進数となります。
num_bin = 0b11
num_hex = 0x11
print(type(num_bin))
# <class 'int'>
print(type(num_hex))
# <class 'int'>
print(num_bin)
# 3
print(num_hex)
# 17
print( )関数の出力は、10進数となります。
スポンサーリンク