W3docs

decoct()

Aprende a usar la función decoct() en PHP para convertir un número decimal en su representación octal.

La función decoct() convierte un entero decimal (base 10) en su representación string en octal (base 8). Es la herramienta integrada de PHP para la conversión de decimal a octal, la inversa de octdec().

El sistema octal sigue apareciendo en código real — especialmente en los permisos de archivos Unix, donde 0755 y 0644 son valores octales. decoct() permite convertir un entero de permisos calculado de vuelta a la familiar cadena de tres dígitos.

Sintaxis

decoct(int $num): string
  • $num — el entero decimal a convertir. Si se pasa un float, primero se trunca a entero.
  • Valor de retorno — un string que contiene la representación octal. El resultado es un string, no un número, porque los valores octales generalmente se muestran en lugar de usarse en operaciones aritméticas adicionales.

El número más grande que se puede convertir depende del tamaño del entero en la plataforma (PHP_INT_MAX). Los números negativos se interpretan usando su patrón de bits en complemento a dos para el tamaño de palabra de la plataforma.

Ejemplo básico

php— editable, runs on the server

El decimal 15 es 17 en octal (1 * 8 + 7 = 15). Nótese que echo imprime 17 sin cero inicial — decoct() nunca añade el prefijo 0 que usan los literales octales en el código fuente.

Valores comunes

<?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 en octal es 755, decoct() resulta útil cuando se lee un modo de archivo numérico y se quiere mostrarlo de la forma que espera chmod.

Leer los bits de permisos de un archivo

fileperms() devuelve el modo incluyendo los bits de tipo de archivo, por lo que hay que aplicar una máscara con & 0777 para conservar solo la parte de permisos antes de convertir:

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

Advertencias

  • La salida es un string sin cero inicial. Si necesitas la forma convencional de cuatro caracteres, añádelo manualmente: '0' . decoct(493) produce "0755".
  • Los floats se truncan, no se redondean. decoct(15.9) devuelve "17" (igual que decoct(15)), porque el float se convierte a int primero.
  • Solo maneja enteros. Para convertir entre bases arbitrarias, usa base_convert() en su lugar.

Funciones relacionadas

  • octdec() — la inversa: convierte un string octal de vuelta a decimal.
  • dechex() y decbin() — convierten decimal a hexadecimal y binario.
  • base_convert() — convierte un número entre cualquier par de bases del 2 al 36.

Práctica

Práctica
¿Qué hace la función decoct en PHP?
¿Qué hace la función decoct en PHP?
Was this page helpful?