10進数から8進数への変換
8で割る繰り返し除算を使って10進数を8進数に変換。ステップごとの実例、実用的なヒント、Unix ファイルパーミッションとの関連を解説します。
Decimal (Base 10) → Octal (Base 8)Conversion
詳細な説明
10進数から8進数への変換は、他の基数変換と同じ繰り返し除算のアプローチに従いますが、各ステップで8で割ります。すべての余りは 0-7 の範囲なので、文字への置換は不要です。
ステップごとの例 --- 493 を8進数に変換:
- 493 ÷ 8: 商 = 61, 余り = 5
- 61 ÷ 8: 商 = 7, 余り = 5
- 7 ÷ 8: 商 = 0, 余り = 7
余りを下から上に読みます: 755。したがって 493₁₀ = 755₈ です。
興味深い関連: 10進数の 493 は chmod 755 のパーミッション値で、Unix で最もよく使われるパーミッション設定です。これは、8進数が3ビットのパーミッションフィールドの自然なグループ化を提供することを示しています。
引き算方式:
8のべき乗に近い数値の場合、引き算の方が速いことがあります:
- 8のべき乗: 1, 8, 64, 512, 4096
- 493 = 7×64 + 5×8 + 5×1 = 755₈
パーミッションでよく使う10進数から8進数への変換:
| 10進数 | 8進数 | パーミッションの意味 |
|---|---|---|
| 511 | 777 | 全員に rwx |
| 493 | 755 | rwxr-xr-x |
| 420 | 644 | rw-r--r-- |
| 448 | 700 | rwx------ |
| 292 | 444 | r--r--r-- |
プログラミングでの利用:
JavaScript では (493).toString(8) が "755" を返します。Python では oct(493) が "0o755" を返します。シェルスクリプトを書く際には、システムコールに正しいパーミッションマスクを渡すために、10進数の値を8進数に変換する必要がしばしばあります。この変換を理解することで、ファイルやプロセスに適切なアクセス制御を設定できます。
ユースケース
DevOps エンジニアは、デプロイ先のサーバーで正確なファイルパーミッションを設定する必要がある Infrastructure as Code スクリプトを書く際に、10進数のパーミッション値を8進数に変換します。