Conversor de Decimal para Octal
Transforme valores de base 10 em base 8 e evite erros com zeros à esquerda.
Escrever 0755 no Python 2 ou em versões antigas do JavaScript gerava 493 em vez de 755. O zero inicial não servia como preenchimento visual: ele instruía o interpretador a tratar o valor como base 8.
Como converter 500 para octal manualmente
A conversão para a base 8 emprega divisões sucessivas por 8. Dividir 500 por 8 resulta em 62, com resto 4. Em seguida, 62 dividido por 8 dá 7, com resto 6. Por fim, 7 dividido por 8 resulta em 0, com resto 7.
Organizando os restos da última divisão para a primeira, obtém-se 764. Para conferir o resultado: 7×64 + 6×8 + 4×1 = 448 + 48 + 4 = 500.
A pegadinha do zero à esquerda no código
Em C, Python 2 e no JavaScript legado, qualquer número iniciado por zero era lido como octal. Quem declarava 0755 imaginando obter setecentos e cinquenta e cinco recebia 493, pois 7×64 + 5×8 + 5×1 = 493.
Linguagens modernas corrigiram essa ambiguidade. O Python 3 exige o prefixo 0o e gera erro de sintaxe se encontrar um zero isolado antes dos dígitos. O modo estrito do JavaScript aplica a mesma restrição. O problema ainda surge em bases legadas ou ao colar strings de permissões numéricas diretamente no código.
Onde o sistema octal ainda é utilizado
- Permissões de arquivos — Valores do comando chmod no Unix, como 755 ou 644, em que cada dígito mapeia exatamente três bits de permissão.
- umask — Máscara padrão aplicada a arquivos recém-criados no sistema, comumente configurada como 022.
- Literais numéricos legados — Trechos de código antigo em que o zero inicial alterava silenciosamente a base numérica.
Perguntas frequentes sobre a conversão decimal para octal
Como funciona o cálculo manual de decimal para octal?
Você divide o número decimal por 8 repetidamente e anota cada resto. O número octal final corresponde à leitura desses restos de trás para frente, do último para o primeiro.
Por que o número 0755 vira 493 em ambientes legados?
Nessas plataformas, o zero à esquerda servia como indicador de base octal. Assim, 0755 é calculado como 7×64 + 5×8 + 5×1, resultando no valor decimal 493.
O interpretador moderno ainda confunde zeros à esquerda?
Geralmente não. O Python 3 exige o prefixo 0o e rejeita zeros soltos no início, enquanto o modo estrito do JavaScript acusa erro de sintaxe.
Qual é a função do valor 022 no comando umask?
Ele representa uma máscara octal subtraída das permissões padrão na criação de pastas e arquivos, removendo o acesso de gravação para o grupo e outros usuários.
A representação octal economiza mais espaço que a hexadecimal?
Não. O hexadecimal agrupa 16 valores por dígito, enquanto o octal agrupa apenas 8. O uso do octal se mantém apenas pela correspondência direta com grupos de 3 bits em permissões Unix.