Pythonでoct()関数を使って整数を8進数表記に変換する方法について解説します。

oct()関数の基本的な使い方

oct()関数は、整数を8進数表記の文字列に変換する組み込み関数です。

number = 42
octal = oct(number)
print(octal)  # 出力: 0o52

返値は文字列で、先頭に`0o`というプレフィックスが付きます。これは8進数であることを示しています。

プレフィックスを除去する方法

8進数の`0o`プレフィックスが不要な場合は、以下のいずれかの方法で除去できます:

# 方法1: スライシングを使用
number = 42
octal = oct(number)[2:]
print(octal)  # 出力: 52

# 方法2: format()関数を使用
number = 42
octal = format(number, 'o')
print(octal)  # 出力: 52

負の数の変換

oct()関数は負の数も変換できます:

number = -42
octal = oct(number)
print(octal)  # 出力: -0o52

よくあるエラーと解決方法

TypeError: 'str' object cannot be interpreted as an integer

このエラーは文字列を直接oct()関数に渡した場合に発生します:

# エラーの例
number = "42"
octal = oct(number)  # TypeError

# 正しい方法
number = "42"
octal = oct(int(number))  # 文字列を整数に変換してからoct()を使用
print(octal)  # 出力: 0o52

ValueError: invalid literal for int() with base 10

文字列を整数に変換する際、数値として解釈できない文字が含まれている場合に発生します:

# エラーの例
number = "42a"
octal = oct(int(number))  # ValueError

# 正しい方法
number = "42"  # 数値のみの文字列を使用
octal = oct(int(number))
print(octal)  # 出力: 0o52

実践的な使用例

ファイルパーミッションの表示

Unixシステムのファイルパーミッションを8進数で表示する例:

permission = 0o755
print(oct(permission))  # 出力: 0o755
print(oct(permission)[2:])  # 出力: 755

複数の数値を一度に変換

リスト内包表記を使用して、複数の数値を8進数に変換する例:

numbers = [10, 20, 30, 40]
octals = [oct(n)[2:] for n in numbers]
print(octals)  # 出力: ['12', '24', '36', '50']

以上がoct()関数の基本的な使い方とよくあるエラーの解決方法です。8進数表記が必要な場面で、この関数を活用してください。