[Python] 8進数の使い方を解説「数値/文字列/変換/出力」
Pythonでは、8進数は先頭に0o
を付けて表現します。例えば、0o10
は8進数で10を意味し、10進数では8に相当します。
文字列から8進数に変換するには、int()
関数を使用し、基数として8を指定します。例として、int('10', 8)
は10進数の8を返します。
8進数を文字列に変換するには、oct()
関数を使用します。例えば、oct(8)
は'0o10'
を返します。
8進数を出力する際は、print()
関数を用いてoct()
の結果を表示します。
Pythonでの8進数の表現
Pythonでは、8進数を表現するために特定のリテラルを使用します。
8進数は、0から7までの数字を使用して表現され、通常は 0o
または 0O
で始まります。
8進数リテラルの書き方
8進数リテラルは、次のように記述します。
0o
または0O
の後に0から7の数字を続ける- 例:
0o10
(8進数の10は10進数の8に相当)
8進数リテラルの例
以下は、いくつかの8進数リテラルの例です。
8進数リテラル | 10進数の値 |
---|---|
0o0 | 0 |
0o1 | 1 |
0o7 | 7 |
0o10 | 8 |
0o17 | 15 |
0o20 | 16 |
0o77 | 63 |
8進数リテラルの注意点
- 8進数リテラルは、0から7の範囲の数字のみを使用する必要があります。
8や9を含むとエラーになります。
- Python 3では、8進数リテラルは
0o
または0O
で始まる必要があります。
Python 2では、単に0
で始まる数値が8進数として解釈されますが、Python 3ではこの形式は推奨されません。
- 8進数を使用する際は、他の数値システム(10進数や16進数)との変換に注意が必要です。
8進数から他の数値システムへの変換
Pythonでは、8進数を他の数値システムに変換するための便利な方法が用意されています。
以下では、8進数から10進数、16進数、2進数への変換方法を解説します。
8進数から10進数への変換
8進数を10進数に変換するには、int()関数
を使用します。
この関数に8進数のリテラルと基数8を指定します。
octal_number = 0o10
decimal_number = int(octal_number) # 10進数に変換
print(decimal_number)
8
8進数から16進数への変換
8進数を16進数に変換するには、まず10進数に変換し、その後hex()関数
を使用して16進数に変換します。
octal_number = 0o10
decimal_number = int(octal_number) # 10進数に変換
hexadecimal_number = hex(decimal_number) # 16進数に変換
print(hexadecimal_number)
0x8
8進数から2進数への変換
8進数を2進数に変換する場合も、まず10進数に変換し、その後bin()関数
を使用して2進数に変換します。
octal_number = 0o10
decimal_number = int(octal_number) # 10進数に変換
binary_number = bin(decimal_number) # 2進数に変換
print(binary_number)
0b1000
これらの方法を使用することで、8進数を他の数値システムに簡単に変換することができます。
他の数値システムから8進数への変換
Pythonでは、他の数値システムから8進数に変換するための方法も簡単に実行できます。
以下では、10進数、16進数、2進数から8進数への変換方法を解説します。
10進数から8進数への変換
10進数を8進数に変換するには、oct()関数
を使用します。
この関数に10進数の値を渡すと、8進数のリテラル形式で返されます。
decimal_number = 8
octal_number = oct(decimal_number) # 8進数に変換
print(octal_number)
0o10
16進数から8進数への変換
16進数を8進数に変換するには、まず10進数に変換し、その後8進数に変換します。
int()関数
を使用して16進数を10進数に変換し、次にoct()関数
を使用します。
hexadecimal_number = 0x8
decimal_number = int(hexadecimal_number) # 10進数に変換
octal_number = oct(decimal_number) # 8進数に変換
print(octal_number)
0o10
2進数から8進数への変換
2進数を8進数に変換する場合も、まず10進数に変換し、その後8進数に変換します。
int()関数
を使用して2進数を10進数に変換し、次にoct()関数
を使用します。
binary_number = 0b1000
decimal_number = int(binary_number) # 10進数に変換
octal_number = oct(decimal_number) # 8進数に変換
print(octal_number)
0o10
これらの方法を使用することで、他の数値システムから8進数に簡単に変換することができます。
文字列としての8進数
Pythonでは、8進数を文字列として扱うことも可能です。
文字列から8進数への変換や、8進数を文字列に変換する方法について解説します。
また、文字列操作における注意点も紹介します。
文字列から8進数への変換
文字列を8進数に変換するには、int()関数
を使用し、基数を8として指定します。
以下の例では、文字列として表現された8進数を整数に変換します。
octal_string = "10"
octal_number = int(octal_string, 8) # 8進数に変換
print(octal_number)
8
8進数から文字列への変換
8進数を文字列に変換するには、str()関数
を使用します。
以下の例では、8進数のリテラルを文字列に変換します。
octal_number = 0o10
octal_string = str(octal_number) # 文字列に変換
print(octal_string)
8
文字列操作の注意点
- 文字列から8進数に変換する際、文字列が8進数の形式であることを確認する必要があります。
例えば、”8″や”9″を含む文字列はエラーになります。
- 8進数を文字列に変換する場合、
str()関数
は10進数の値を返します。
8進数の形式で表示したい場合は、oct()関数
を使用して8進数のリテラル形式に変換する必要があります。
- 文字列操作を行う際は、数値の型に注意し、適切な変換を行うことが重要です。
8進数の出力方法
Pythonでは、8進数をさまざまな方法で出力することができます。
ここでは、標準出力、フォーマット指定子、f-stringを使用した8進数の表示方法について解説します。
標準出力での8進数の表示
8進数を標準出力で表示するには、print()関数
を使用します。
8進数のリテラルをそのまま出力することができます。
octal_number = 0o10
print(octal_number) # 10進数として表示
8
8進数の形式で表示したい場合は、oct()関数
を使用します。
octal_number = 0o10
print(oct(octal_number)) # 8進数として表示
0o10
フォーマット指定子を使った出力
フォーマット指定子を使用して8進数を出力することもできます。
%
演算子を使って、8進数形式で表示することができます。
octal_number = 0o10
print("8進数: %o" % octal_number) # フォーマット指定子を使用
8進数: 10
f-stringを使った出力
Python 3.6以降では、f-stringを使用して8進数を出力することができます。
f-stringを使うと、より直感的に変数を埋め込むことができます。
octal_number = 0o10
print(f"8進数: {oct(octal_number)}") # f-stringを使用
8進数: 0o10
これらの方法を使用することで、8進数をさまざまな形式で出力することができます。
用途に応じて適切な方法を選択しましょう。
応用例
8進数は、さまざまなプログラミングのシナリオで役立ちます。
ここでは、ファイルサイズの表示、ネットワークプログラミング、低レベルプログラミングにおける8進数の利用例を紹介します。
ファイルサイズの表示に8進数を使う
ファイルサイズを8進数で表示することで、特定のシステムやプロトコルにおけるサイズの理解を助けることができます。
以下の例では、ファイルのサイズを取得し、8進数で表示します。
import os
file_path = 'example.txt' # 対象のファイル
file_size = os.path.getsize(file_path) # ファイルサイズを取得
print(f"ファイルサイズ: {oct(file_size)}") # 8進数で表示
ファイルサイズ: 0o1000
ネットワークプログラミングでの8進数の利用
ネットワークプログラミングでは、ポート番号やIPアドレスの一部を8進数で表現することがあります。
以下の例では、ポート番号を8進数で表示します。
port_number = 80 # HTTPポート
print(f"HTTPポート番号: {oct(port_number)}") # 8進数で表示
HTTPポート番号: 0o120
低レベルプログラミングでの8進数の活用
低レベルプログラミングでは、8進数が特に重要です。
例えば、ファイルのパーミッションを設定する際に8進数が使用されます。
以下の例では、ファイルのパーミッションを8進数で設定します。
import os
file_path = 'example.txt'
os.chmod(file_path, 0o755) # パーミッションを8進数で設定
print(f"{file_path}のパーミッションを755に設定しました。")
example.txtのパーミッションを755に設定しました。
これらの応用例を通じて、8進数がどのように実際のプログラミングに役立つかを理解することができます。
状況に応じて8進数を活用することで、より効率的なプログラミングが可能になります。
まとめ
この記事では、Pythonにおける8進数の使い方や応用例について詳しく解説しました。
8進数は、特に低レベルプログラミングやファイルのパーミッション設定など、特定の場面で非常に有用です。
今後は、8進数の特性を活かして、プログラミングの幅を広げてみてください。