W3docs

octdec()

Aprenda a função PHP octdec(): converta números octais para decimal, com sintaxe, valores de retorno, exemplos de permissões de arquivo e demos ao vivo.

A função octdec() converte um número octal (base 8), fornecido como string, no seu equivalente decimal (base 10). Esta página aborda sua sintaxe, valor de retorno, o uso mais comum no mundo real (permissões de arquivo Unix) e os cuidados a ter.

O que é a Função octdec()?

octdec() é uma função PHP integrada que recebe um número octal escrito como string e retorna o inteiro decimal correspondente.

Uma revisão rápida dos sistemas de numeração:

  • Octal (base 8) usa apenas os dígitos 07. Cada posição é uma potência de 8.
  • Decimal (base 10) é o sistema do cotidiano, usando os dígitos 09.

Por exemplo, a string octal "17" significa 1 × 8 + 7 × 1 = 15 em decimal. octdec() faz esse cálculo para você, sem precisar calcular potências de 8 manualmente.

É o inverso de decoct(), que converte um número decimal de volta para uma string octal.

Sintaxe

octdec(string $octal_string): int|float
  • $octal_string — o valor octal a converter, como string (por exemplo, "755").
  • Valor de retorno — o equivalente decimal. O resultado é um int, mas o PHP retorna um float automaticamente quando o número é grande demais para caber em um inteiro da plataforma.

Como Usar a Função octdec()

Passe o valor octal como string e octdec() retorna o número decimal:

php— editable, runs on the server

Aqui a string octal "10" equivale a 1 × 8 + 0 = 8 em decimal, então o script imprime 8. Note que octal "10" não é dez — é oito, porque não existe o dígito 8 ou 9 na base 8.

Convertendo Vários Valores

Observar algumas conversões lado a lado torna o padrão de base 8 mais claro:

<?php
echo octdec("7"),   "\n"; // 7   (7 × 1)
echo octdec("10"),  "\n"; // 8   (1 × 8 + 0)
echo octdec("17"),  "\n"; // 15  (1 × 8 + 7)
echo octdec("100"), "\n"; // 64  (1 × 64)
echo octdec("777"), "\n"; // 511 (7 × 64 + 7 × 8 + 7)
?>

Uso no Mundo Real: Permissões de Arquivo

O motivo mais comum para usar octdec() são as permissões de arquivo Unix. Funções como chmod() esperam um inteiro, mas as permissões são quase sempre escritas e discutidas em octal (755, 644, etc.). Passar uma string de permissão diretamente falha silenciosamente, por isso converta-a primeiro:

<?php
$octalPermission = "755";

// Convert the octal permission string to the integer chmod() needs
$mode = octdec($octalPermission);

echo "Octal 755 = decimal {$mode}\n"; // Octal 755 = decimal 493

// chmod("script.sh", $mode); // applies rwxr-xr-x
?>

Isso imprime Octal 755 = decimal 493. Um erro comum é chamar chmod("file", 755) com um literal decimal simples — isso define os bits de permissão errados. Escreva o literal octal 0755 ou construa o valor com octdec("755").

Cuidados a Ter

Aviso

octdec() ignora silenciosamente qualquer caractere que não seja um dígito octal válido (07). Portanto, octdec("90") não gera um erro — ele descarta o 9 inválido e o 0 permanece, retornando 0. Valide sua entrada antes de converter se ela puder conter caracteres inválidos.

Mais alguns pontos a considerar:

  • A entrada deve conter apenas dígitos octais. Os dígitos 8 e 9 não são válidos na base 8 e são descartados.
  • Passe uma string, não um literal. Escrever octdec(017) primeiro interpreta 017 como um literal octal (decimal 15) antes de convertê-lo novamente — raramente é o que se deseja. Use octdec("17").
  • Valores grandes retornam um float. Strings octais muito grandes excedem PHP_INT_MAX, então octdec() retorna um número de ponto flutuante em vez de um inteiro.

Funções Relacionadas

  • decoct() — o inverso: decimal para octal.
  • hexdec() / dechex() — converte entre hexadecimal e decimal.
  • bindec() / decbin() — converte entre binário e decimal.
  • intval() — analisa uma string para um inteiro em uma base arbitrária (intval($str, 8) é outra forma de ler octal).

Conclusão

A função octdec() transforma uma string octal em um inteiro decimal, o que é essencial sempre que você trabalha com permissões de arquivo ou qualquer dado de base 8 em PHP. Lembre-se de passar o valor como string, validar entradas que possam conter caracteres não octais e usar decoct() quando precisar converter na direção oposta.

Prática

Prática
Qual é o propósito da função PHP octdec()?
Qual é o propósito da função PHP octdec()?
Was this page helpful?