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) # 出力: 0o52ValueError: 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進数表記が必要な場面で、この関数を活用してください。