8진수 → 10진수 변환기

→
10진수 = 각 8진수 자리 × 8의 자리 거듭제곱을 모두 더하기

8진수 → 10진수: 모드와 마스크, 옛 덤프 풀어 읽기

이 변환이 하는 일

기수 8 값을 읽어 기수 10으로 다시 씁니다. chmod와 ls가 기대하는 것처럼 모드가 이미 8진수로 적혀 있고, 그 수가 스크립트나 설정 필드, 주변 코드가 10진수를 전제하는 비교로 들어가야 할 때 필요한 방향입니다.

각 자리는 8의 거듭제곱

오른쪽부터 가중치가 1, 8, 64, 512… 입니다. 755를 변환하면 7 곱하기 64 더하기 5 곱하기 8 더하기 5, 즉 493입니다. 값이 10진수가 되는 순간 자리들이 더 이상 세 개의 독립된 권한이 아니라는 점을 기억하세요. 8진수 형태를 읽기 좋게 만든 압축 구조를 10진수 변환이 그대로 녹여 버립니다.

8진수 → 10진수 변환표

8진수 모드와 마스크를 10진수로 옮긴 표입니다. 권한 모드를 10진수로 바꾸는 것은 스크립트에 쓸모가 있고 읽을 때는 8진수로 두는 편이 낫습니다. 그래서 대부분의 팀이 둘 다 기록합니다.

8진수10진수
00
11
77
108
1715
10064
377255
644420
755493
1000512

8진수의 쓰임이 권한으로 좁아진 까닭

기수는 기계의 묶음과 맞을 때 제값을 합니다. 8진수는 초기 하드웨어의 6비트와 12비트 워드에 맞았고, 8비트 바이트가 보편화되자 자연스러운 묶음이 4비트가 되면서 16진수 차례가 되었습니다. 권한이 살아남은 것은 정말로 9비트 폭이고 3개씩 세 묶음으로 정확히 나뉘기 때문입니다.

권한 계산을 10진수로 하지 마세요

10진수 493에 64를 더해 읽기 권한을 주려는 생각은 그럴듯하지만 틀렸습니다. 그 64는 10진수 예순네이고 8진수 모드에서 켜지는 비트는 원하던 읽기 비트가 아닙니다. 권한 연산은 400이나 40 같은 값으로 8진수에서 하고 저장과 표시를 위해 변환만 하세요.

자주 묻는 질문

8진수를 10진수로 손으로 바꾸려면 어떻게 하나요?

오른쪽부터 각 자리에 1, 8, 64, 512… 의 자리값을 곱해 더합니다. 755는 7 곱하기 64 더하기 5 곱하기 8 더하기 5이므로 448 + 40 + 5, 즉 493입니다.

chmod 755가 스크립트에서 493으로 보이는 이유는 무엇인가요?

스크립트가 모드를 평범한 10진수 정수로 읽기 때문입니다. 파일 시스템은 어느 쪽이든 같은 비트를 저장하고 표기만 다릅니다. 8진수 형태는 머릿속과 주석에 남기고 10진수를 기대하는 코드와 만나는 경계에서 변환하세요.

여기서 변환할 수 있는 가장 큰 8진수는 얼마인가요?

실용적인 모드나 마스크보다 훨씬 큽니다. 정수 연산으로 변환하므로 긴 입력도 부동소수점 계산기가 내놓는 반올림된 값 대신 모든 자리가 정확히 나옵니다.

8진수에서 앞의 0은 의미가 있나요?

수치로는 없습니다. 0755와 755는 같은 값입니다. 다만 이것은 8진수라고 알려 주는 표시로 쓸모가 있고 여러 언어가 8진수 리터럴에 이 0을 요구합니다. 이 변환기는 입력에서 앞의 0과 0o 접두사를 받고 출력에는 절대 붙이지 않습니다.

8진수 소수점도 입력할 수 있나요?

됩니다. 표현할 수 없을 때는 솔직하게 알려 줍니다. 8진수 소수는 분모가 2의 거듭제곱인지에 따라 끝나는 것과 그렇지 않은 것이 갈립니다. 전개가 끝나지 않으면 답이 정확한 것처럼 반올림하지 않고 잘렸다고 분명히 표시합니다.

아래 코드를 복사하여 웹사이트에 붙여넣으면 이 변환기를 추가할 수 있습니다.

<!-- 8진수를 10진수로 -->
<iframe src="https://unitflow.net/ko/embed/octal-to-decimal" title="8진수를 10진수로" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/ko/octal-to-decimal" target="_blank" rel="noopener">UnitFlow 제공</a></p>