W3docs

octdec()

Aprende la función PHP octdec(): convierte números octales a decimales, con sintaxis, valores de retorno, permisos de archivos y ejemplos en vivo.

La función octdec() convierte un número octal (base 8), dado como cadena de texto, en su equivalente decimal (base 10). Esta página cubre su sintaxis, valor de retorno, el uso más común en el mundo real (permisos de archivo Unix) y los errores frecuentes a tener en cuenta.

¿Qué es la función octdec()?

octdec() es una función integrada de PHP que recibe un número octal escrito como cadena y devuelve el entero decimal correspondiente.

Un repaso rápido a los sistemas numéricos:

  • Octal (base 8) utiliza únicamente los dígitos 07. Cada posición es una potencia de 8.
  • Decimal (base 10) es el sistema cotidiano, que usa los dígitos 09.

Por ejemplo, la cadena octal "17" equivale a 1 × 8 + 7 × 1 = 15 en decimal. octdec() realiza ese cálculo por ti para que no tengas que computar potencias de 8 a mano.

Es la función inversa de decoct(), que convierte un número decimal de vuelta a una cadena octal.

Sintaxis

octdec(string $octal_string): int|float
  • $octal_string — el valor octal a convertir, como cadena de texto (por ejemplo, "755").
  • Valor de retorno — el equivalente decimal. El resultado es un int, pero PHP devuelve un float automáticamente cuando el número es demasiado grande para caber en un entero de plataforma.

Cómo usar la función octdec()

Pasa el valor octal como cadena y octdec() devuelve el número decimal:

php— editable, runs on the server

Aquí la cadena octal "10" equivale a 1 × 8 + 0 = 8 en decimal, por lo que el script imprime 8. Ten en cuenta que el octal "10" no es diez — es ocho, porque no existe el dígito 8 ni el 9 en base 8.

Conversión de varios valores

Ver varias conversiones lado a lado hace que el patrón de base 8 quede más 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 en el mundo real: permisos de archivos

La razón más común para recurrir a octdec() son los permisos de archivo Unix. Funciones como chmod() esperan un entero, pero los permisos casi siempre se escriben y discuten en octal (755, 644, etc.). Pasar una cadena de permisos directamente falla silenciosamente, así que conviértela primero:

<?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
?>

Esto imprime Octal 755 = decimal 493. Un error frecuente es llamar a chmod("file", 755) con un literal decimal simple — eso establece los bits de permiso incorrectos. Escribe el literal octal 0755 o construye el valor con octdec("755").

Cosas a tener en cuenta

Advertencia

octdec() ignora silenciosamente cualquier carácter que no sea un dígito octal válido (07). Así, octdec("90") no lanza un error — descarta el 9 inválido y queda 0, devolviendo 0. Valida tu entrada antes de convertirla si puede contener caracteres no válidos.

Algunos puntos más a considerar:

  • La entrada debe contener solo dígitos octales. Los dígitos 8 y 9 no son válidos en base 8 y se descartan.
  • Pasa una cadena, no un literal. Escribir octdec(017) primero interpreta 017 como un literal octal (decimal 15) antes de convertirlo de nuevo — raramente es lo que se desea. Usa octdec("17").
  • Los valores grandes devuelven un float. Las cadenas octales muy largas superan PHP_INT_MAX, por lo que octdec() devuelve un número de punto flotante en lugar de un entero.

Funciones relacionadas

  • decoct() — la inversa: de decimal a octal.
  • hexdec() / dechex() — convierten entre hexadecimal y decimal.
  • bindec() / decbin() — convierten entre binario y decimal.
  • intval() — analiza una cadena a entero en una base arbitraria (intval($str, 8) es otra forma de leer octal).

Conclusión

La función octdec() convierte una cadena octal en un entero decimal, lo cual es esencial cuando se trabaja con permisos de archivo o cualquier dato en base 8 en PHP. Recuerda pasar el valor como cadena, validar la entrada que pueda contener caracteres no octales, y recurrir a decoct() cuando necesites convertir en la dirección contraria.

Práctica

Práctica
¿Cuál es el propósito de la función PHP octdec()?
¿Cuál es el propósito de la función PHP octdec()?
Was this page helpful?