Pythonの8進数変換について

Python,イメージ

AI実装検定のご案内

Pythonでの8進数(octal)変換について、初心者から中級者向けに体系的かつ詳細に解説します。

8進数は基数が8の数値体系で、0〜7の数字だけを使います。

これは、古くからコンピュータのシステム(特にUnix系のパーミッション設定など)で利用されてきました。

目次

Pythonにおける8進数の基本

8進数の表現方法

Pythonでは、8進数は0oまたは0Oというプレフィックス(接頭辞)を使って表現します。

octal_number = 0o10
print(octal_number)  # 8(10(8進数)= 8(10進数))

10進数 → 8進数 への変換

Pythonでは組み込み関数 oct() を使って、10進数の整数を8進数の文字列に変換できます。

使用例

num = 64
octal_str = oct(num)
print(octal_str)  # '0o100'

出力の意味

  • '0o100' は8進数表現の文字列です。
  • 数値部分は '100'(8進数)、プレフィックス '0o' は8進数であることを示しています。

プレフィックスなしで表示したいとき

print(oct(num)[2:])  # '100'

8進数 → 10進数 への変換

8進数表現の 文字列を10進数の整数に変換するには、int() 関数に基数(base=8)を指定します。

使用例

octal_str = '100'
decimal_num = int(octal_str, 8)
print(decimal_num)  # 64

プレフィックス付きでもOK

print(int('0o100', 8))  # 64

リテラルで直接8進数を記述する方法

Pythonでは 0o を付けてリテラルとして8進数を書くことができます。

x = 0o755
print(x)  # 493

これはUnix系OSで使われる「パーミッション設定」でよく使われる表現です(例:chmod 755)。

数値変換の例まとめ

10進数oct()の出力8進数文字列int(文字列, 8)の結果
8'0o10''10'8
64'0o100''100'64
493'0o755''755'493

8進数での演算も可能

Pythonでは8進数リテラルも整数として扱われるので、通常の数値と同じように計算できます。

a = 0o10  # 8
b = 0o20  # 16
print(a + b)       # 24
print(oct(a + b))  # '0o30'

注意点とエラー例

int('89', 8) のように、8進数に存在しない数字を含めるとエラーになります。

int('89', 8)  
# ValueError: invalid literal for int() with base 8: '89'

8進数は 0〜7 しか使えないので、89 は含めてはいけません。

応用:8進数のリストや桁揃え

10進数リストを8進数に変換してゼロ埋め(zfill)

for i in range(10):
    print(oct(i)[2:].zfill(3))  # 3桁表示(例:001, 002, ...)

まとめ

Python,イメージ
操作方法
10進数 → 8進数oct(数値)
8進数(文字列) → 10進数int(文字列, 8)
8進数リテラル0o数字(例:0o755
プレフィックス除去oct(数値)[2:]
8進数演算通常の整数と同様に可能

補足:他の進数との比較

種類プレフィックス組み込み関数
2進数0b0b1010bin()
8進数0o0o12oct()
16進数0x0x1Fhex()

以上、Pythonの8進数変換についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次