Python oct()関数の使い方と応用方法3選

この記事では、Python oct()の使い方を説明し、日常的にどのように活用できるかを紹介します。Pythonはさまざまな数学的演算を簡単に処理できる高級プログラミング言語です。その中でも、異なる進数(基数)を扱う方法は重要であり、今回はその際に使用される関数の1つであるoct()について見ていきます。また、初心者向けに関連する用語の説明と便利な活用方法も併せて紹介します。

Python oct()関数とは?

oct()関数は、数字を8進数に変換するPythonの組み込み関数です。Pythonでは整数はデフォルトで10進数(Decimal)で表現されます。しかし、oct()関数を使用すると8進数に変換でき、その結果は文字列として返されます。8進数は、数字を8つの数字(0〜7)で表現する方式で、主にシステムプログラミングや特定のメモリアドレス処理などで使用されます。

Python
num = 10
print(oct(num))

上記のコードを実行すると、10が8進数に変換された'0o12'という結果が表示されます。ここで、前に付いている0oは、その数字が8進数であることを示しています。

図1. Python oct()を実行して10進数を8進数の文字列に変換
図1. Python oct()を実行して10進数を8進数の文字列に変換

8進数とは?

8進数(Octal)は、0から7までの数字を使用して表現する数字体系です。例えば、10進数での8は8進数では10、10進数での10は8進数では12と表現されます。コンピュータがデータを保存したり送信したりする際には、2進数(Binary)がよく使われますが、可読性を高めるために8進数や16進数に変換される場合があります。

oct()関数の使い方

基本的な使い方

oct()関数は、数字を入力して簡単に8進数に変換する機能を提供します。使い方は以下の通りです。

Python
oct(整数)

ここで、「整数」は変換する数字を意味します。もし整数ではない値(例:小数点のある値)を入力すると、TypeErrorが発生するため、注意が必要です。

負数の処理

oct()関数は負数も処理できます。負数を入力すると、負の符号が付いた8進数の文字列が返されます。

Python
print(oct(-8))
図2. Pythonのoct()を実行して負数を8進数の文字列に変換
図2. Pythonのoct()を実行して負数を8進数の文字列に変換

oct()関数の応用方法

システムプログラミングでの活用

システムプログラミングでは、メモリアドレスやファイルの権限を扱う際に8進数を使用することがよくあります。特に、LinuxやUnixベースのシステムでは、ファイルの権限を設定する際に使用される値が8進数です。これを処理する際、oct()関数は非常に便利です。

ファイル権限の例

Linuxでは、chmodコマンドと一緒に8進数を使用してファイル権限を設定します。例えば、chmod 755は、ファイル所有者には読み取り、書き込み、実行権限を与え、グループと他のユーザーには読み取りと実行権限を与えます。Pythonでファイル権限を設定する際に、oct()関数を使って権限の値を簡単に確認できます。

Python
file_mode = 0o755
print(oct(file_mode))

出力は次のとおりです。

図3. Pythonのoct()でファイル権限の値を出力
図3. Pythonのoct()でファイル権限の値を出力

ネットワークプログラミングでの活用

ネットワークプログラミングでは、IPアドレスやポート番号を扱う際に進数変換が必要になることがあります。このとき、oct()関数を使用すれば、IPアドレスやポート番号を8進数に簡単に変換して処理できます。

数字形式の変換での活用

時々、異なる進数間での変換が必要になることがあります。例えば、10進数を8進数に変換した後、さらに16進数に変換する場合、oct()関数と他の変換関数を組み合わせて簡単に処理できます。

Python
num = 15
octal_value = oct(num)
hex_value = hex(int(octal_value, 8))

print(f"10進数: {num}, 8進数: {octal_value}, 16進数: {hex_value}")

このコードは、10進数の15を8進数と16進数に変換して出力する例です。

図4. Pythonのoct()と他の関数を組み合わせて使用
図4. Pythonのoct()と他の関数を組み合わせて使用

oct()関数使用時の注意点

文字列の出力に注意

oct()関数は変換された値を文字列で返します。そのため、数値演算を行う場合は、再度整数型に変換する必要があります。これには、int()関数を使用して8進数の文字列を再び10進数の整数に変換できます。

Python
octal_value = oct(8)
print(octal_value)
int_value = int(octal_value, 8)
print(int_value)

出力は次のとおりです。

図5. Pythonのoct()結果の文字列を再び10進数の整数に変換
図5. Pythonのoct()結果の文字列を再び10進数の整数に変換

小数点や他のデータ型の処理

oct()関数は整数しか処理できません。小数点のある数字や文字列を入力するとエラーが発生しますので、使用前に必ずデータ型を確認してください。

Python
print(oct(3.14))  # TypeError発生

小数点のある値を使用すると、下の図のように「TypeError: ‘float’ object cannot be interpreted as an integer」というエラーメッセージが表示され、floatオブジェクトが整数として解釈できないことを知らせてくれます。

図6. Pythonのoct()は浮動小数点数を処理できない
図6. Pythonのoct()は浮動小数点数を処理できない

まとめ

Pythonのoct()関数は、数字を8進数に変換するシンプルで非常に便利な機能を提供します。特にシステムプログラミング、ファイル権限設定、ネットワークプログラミングなどでよく活用できます。oct()関数は基本的に文字列を返し、他の進数変換関数と組み合わせて使うことで、さらに強力なツールとして利用できます。関数を使用する際はデータ型に注意し、エラーを防ぐために変換する数字の形式も必ず確認してください。

リファレンス

関連ポスト

コメントする