W3docs

decoct()

Aprenda sobre a função decoct() em PHP, usada para converter um número decimal em sua representação octal.

A função decoct() converte um inteiro decimal (base 10) em sua representação string octal (base 8). É a ferramenta nativa do PHP para a conversão no sentido decimal-para-octal, o inverso de octdec().

O sistema octal ainda aparece em código real — especialmente nas permissões de arquivos Unix, onde 0755 e 0644 são valores octais. decoct() permite transformar um inteiro de permissão calculado de volta na familiar string de três dígitos.

Sintaxe

decoct(int $num): string
  • $num — o inteiro decimal a ser convertido. Se um float for passado, ele é truncado para inteiro primeiro.
  • Valor de retorno — uma string contendo a representação octal. O resultado é uma string, não um número, porque valores octais geralmente são exibidos em vez de usados em cálculos adicionais.

O maior número que pode ser convertido depende do tamanho do inteiro da plataforma (PHP_INT_MAX). Números negativos são interpretados usando seu padrão de bits em complemento de dois para o tamanho de palavra da plataforma.

Exemplo básico

php— editable, runs on the server

O decimal 15 equivale a 17 em octal (1 * 8 + 7 = 15). Observe que echo imprime 17 sem zero inicial — decoct() nunca adiciona o prefixo 0 que os literais octais usam no código-fonte.

Valores comuns

<?php
echo decoct(8);   // 10
echo "\n";
echo decoct(64);  // 100
echo "\n";
echo decoct(493); // 755  (the rwxr-xr-x permission set)
?>

Como 493 em octal é 755, decoct() é útil quando você lê um modo de arquivo numérico e deseja exibi-lo da forma que o chmod espera.

Lendo os bits de permissão de um arquivo

fileperms() retorna o modo incluindo os bits de tipo de arquivo, então use & 0777 para manter apenas a parte de permissão antes de converter:

<?php
$mode = 0755;                 // octal literal -> stored as decimal 493
echo decoct($mode & 0777);    // 755
?>

Armadilhas

  • A saída é uma string sem zero inicial. Se você precisar do formato convencional de quatro caracteres, adicione-o manualmente: '0' . decoct(493) resulta em "0755".
  • Floats são truncados, não arredondados. decoct(15.9) retorna "17" (igual a decoct(15)), porque o float é convertido para int primeiro.
  • Só lida com inteiros. Para converter entre bases arbitrárias, use base_convert().

Funções relacionadas

  • octdec() — o inverso: string octal de volta para decimal.
  • dechex() e decbin() — convertem decimal para hexadecimal e binário.
  • base_convert() — converte um número entre quaisquer duas bases de 2 a 36.

Prática

Prática
O que a função decoct faz em PHP?
O que a função decoct faz em PHP?
Was this page helpful?