このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】整数を2,8,16進数の文字列に変換する関数

整数を2,8,16進数の文字列に変換する関数
整数を2進数、8進数、16進数の文字列に変換することは、デバッグや低レベルのデータ操作、さらにはフォーマットされた出力を生成する際に非常に役立ちます。Pythonでは、これらの変換を行うための組み込み関数(bin, oct, hex)や、f文字列の書式指定機能が用意されており、値を簡単に目的の進数表現に変換することが可能です。
ここでは、これらの関数の基本的な使い方と、書式指定の方法について、具体例と表を交えて解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.基本の変換関数
1.1. bin関数
bin関数は、整数を2進数の文字列に変換します。返される文字列は先頭に "0b" が付きます。
【構文】
bin(整数)
例 | 説明 |
---|---|
bin(200) | 200を2進数に変換("0b11001000") |
# 例: 200を2進数に変換する
binary_value = bin(200)
print("bin(200):", binary_value) # 出力例: bin(200): 0b11001000
実行結果
bin(200): 0b11001000
解説
200をbin関数に渡すと、"0b11001000" という2進数表現の文字列が返されます。
1.2. oct関数
oct関数は、整数を8進数の文字列に変換します。返される文字列は先頭に "0o" が付きます。
【構文】
oct(整数)
例 | 説明 |
---|---|
oct(200) | 200を8進数に変換("0o310") |
# 例: 200を8進数に変換する
octal_value = oct(200)
print("oct(200):", octal_value) # 出力例: oct(200): 0o310
実行結果
oct(200): 0o310
解説
200をoct関数に渡すと、"0o310" という8進数表現の文字列が返されます。
1.3. hex関数
hex関数は、整数を16進数の文字列に変換します。返される文字列は先頭に "0x" が付きます。
【構文】
hex(整数)
例 | 説明 |
---|---|
hex(200) | 200を16進数に変換("0xc8") |
# 例: 200を16進数に変換する
hex_value = hex(200)
print("hex(200):", hex_value) # 出力例: hex(200): 0xc8
実行結果
hex(200): 0xc8
解説
200をhex関数に渡すと、"0xc8" という16進数表現の文字列が返されます。
2.f文字列を使った進数変換
2.1. f文字列による基本的な記法
Pythonのf文字列は、文字列リテラルの先頭に f
を付けることで、波括弧 {}
内に変数や式を直接埋め込むことができます。進数変換の場合、書式指定子として b
(2進数)、o
(8進数)、x
(16進数)を使います。
【構文】
f'{整数:書式指定}'
書式指定 | 説明 |
---|---|
b | 2進数表現(接頭辞なし) |
o | 8進数表現(接頭辞なし) |
x | 16進数表現(接頭辞なし、アルファベットは小文字) |
# 例: f文字列を使って200を各進数表現に変換する
print(f"Binary: {200:b}") # 出力例: Binary: 11001000
print(f"Octal: {200:o}") # 出力例: Octal: 310
print(f"Hexadecimal: {200:x}") # 出力例: Hexadecimal: c8
実行結果
Binary: 11001000
Octal: 310
Hexadecimal: c8
解説
- f文字列内では、
{200:b}
により200が2進数で表示され、{200:o}
で8進数、{200:x}
で16進数の値が得られます。 - 先頭の "0b", "0o", "0x" は表示されませんが、必要な場合は書式指定子の前にシャープ(#)を付けることで付加できます。
2.2. シャープ付きの書式指定
シャープ(#)を使うと、進数表現の接頭辞が付加されます。
print(f"Binary with prefix: {200:#b}") # 出力例: Binary with prefix: 0b11001000
print(f"Octal with prefix: {200:#o}") # 出力例: Octal with prefix: 0o310
print(f"Hexadecimal with prefix: {200:#x}") # 出力例: Hexadecimal with prefix: 0xc8
実行結果
Binary with prefix: 0b11001000
Octal with prefix: 0o310
Hexadecimal with prefix: 0xc8
解説
#b
, #o
, #x
を使うことで、それぞれの進数表現に "0b", "0o", "0x" が自動的に付加され、より明確な形式で出力されます。
まとめ
整数を2進数、8進数、16進数の文字列に変換するための関数は、bin, oct, hexの3つが代表的です。
- bin関数は、整数を"0b"付きの2進数表現に変換します。
- oct関数は、整数を"0o"付きの8進数表現に変換します。
- hex関数は、整数を"0x"付きの16進数表現に変換します。
さらに、f文字列を使えば、書式指定子を利用して簡潔に進数変換が可能となり、必要に応じて接頭辞を付加することもできます。
これらの機能を活用することで、数値を見やすく整形し、デバッグやレポート作成などさまざまな場面で効果的に利用することができます。