[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()の結果を表示します。

この記事でわかること
  • 8進数リテラルの書き方と注意点
  • 8進数から他の数値システムへの変換方法
  • 他の数値システムから8進数への変換方法
  • 文字列としての8進数の扱い方
  • 8進数の実用的な応用例

目次から探す

Pythonでの8進数の表現

Pythonでは、8進数を表現するために特定のリテラルを使用します。

8進数は、0から7までの数字を使用して表現され、通常は 0o または 0O で始まります。

8進数リテラルの書き方

8進数リテラルは、次のように記述します。

  • 0oまたは0Oの後に0から7の数字を続ける
  • 例: 0o10(8進数の10は10進数の8に相当)

8進数リテラルの例

以下は、いくつかの8進数リテラルの例です。

スクロールできます
8進数リテラル10進数の値
0o00
0o11
0o77
0o108
0o1715
0o2016
0o7763

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進数を活用することで、より効率的なプログラミングが可能になります。

よくある質問

8進数の利点は何ですか?

8進数の利点は、特にコンピュータの低レベルプログラミングやファイルのパーミッション設定において、数値を簡潔に表現できる点です。

また、8進数は2進数と密接に関連しているため、バイナリデータの表現が容易になります。

8進数を使うべき場面は?

8進数は、特にUNIX系のシステムでファイルのパーミッションを設定する際や、特定のプロトコルでデータを表現する際に使用されます。

また、低レベルのハードウェア制御や、特定のアルゴリズムでの数値表現にも適しています。

8進数の計算で注意すべき点は?

8進数の計算を行う際は、8進数の範囲(0から7)を超えないように注意が必要です。

また、他の数値システムとの変換を行う際には、基数を正しく指定することが重要です。

特に、8進数を10進数や16進数に変換する際には、変換の過程で誤解が生じないように注意しましょう。

まとめ

この記事では、Pythonにおける8進数の使い方や応用例について詳しく解説しました。

8進数は、特に低レベルプログラミングやファイルのパーミッション設定など、特定の場面で非常に有用です。

今後は、8進数の特性を活かして、プログラミングの幅を広げてみてください。

  • URLをコピーしました!
目次から探す