文法・環境 組み込み関数

【Python】2進数、16進数と10進数を変換する方法【bin、hex、format】

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進数となります。

スポンサーリンク

-文法・環境, 組み込み関数
-,