W3docs

base_convert()

Aprende a usar la función base_convert() de PHP para convertir números de una base numérica a otra, con ejemplos y advertencias prácticas.

La función base_convert() convierte un número de una base numérica a otra — por ejemplo, de decimal (base 10) a binario (base 2), o de hexadecimal (base 16) de vuelta a decimal. Es la más general de las funciones de conversión de bases de PHP, porque funciona con cualquier base del 2 al 36, mientras que funciones como dechex() o bindec() están limitadas a un único par de bases.

Esta página cubre la sintaxis, el rango válido de bases, un conjunto de ejemplos ejecutables, los problemas a tener en cuenta (sensibilidad a mayúsculas, fracciones, límites de precisión) y cuándo conviene usar una función más específica.

Sintaxis

base_convert(string $num, int $from_base, int $to_base): string
ParámetroDescripción
$numEl número a convertir, proporcionado como string (también se acepta un entero y se convierte a string).
$from_baseLa base en la que está escrito actualmente $num. Debe estar entre 2 y 36.
$to_baseLa base a la que se convertirá $num. Debe estar entre 2 y 36.

Valor de retorno: el número convertido como string, siempre en minúsculas. Las bases superiores a 10 utilizan las letras az para los dígitos del 10 al 35 (así, la base 16 usa 0-9 y a-f, y la base 36 usa 0-9 y a-z).

Un ejemplo básico

El uso más común es convertir un número decimal a binario:

php— editable, runs on the server

El decimal 10 se convierte en el string "1010" en binario. Ten en cuenta que el resultado es un string, no un entero — recuérdalo si planeas hacer operaciones aritméticas con él después.

Conversión entre bases comunes

La misma función maneja hexadecimal, octal y cualquier base intermedia. Aquí se muestran varias conversiones en paralelo:

<?php
echo base_convert("ff", 16, 10), "\n";   // hex -> decimal: 255
echo base_convert("255", 10, 16), "\n";  // decimal -> hex: ff
echo base_convert("777", 8, 10), "\n";   // octal -> decimal: 511
echo base_convert("a37334", 16, 2), "\n";// hex -> binary
echo base_convert("zz", 36, 10), "\n";   // base 36 -> decimal: 1295
?>

Esto imprime:

255
ff
511
101000110111001100110100
1295

Dado que base_convert() entiende ambos extremos de la conversión, no es necesario encadenar dos llamadas separadas para, por ejemplo, pasar de hexadecimal a binario.

Aspectos a tener en cuenta

  • Las mayúsculas se normalizan. Las letras de entrada pueden ser mayúsculas o minúsculas ("FF" y "ff" funcionan igual), pero la salida es siempre en minúsculas.
  • Las fracciones no están soportadas. base_convert() trabaja solo con números enteros. Un valor como "12.34" tiene el . tratado como un carácter inválido — se elimina y solo se convierten los dígitos (y PHP 8.1+ emite un aviso de obsolescencia por los caracteres ignorados).
  • Los dígitos inválidos son ignorados. Un carácter que no es válido en $from_base (por ejemplo un 9 cuando $from_base es 8) se descarta silenciosamente en lugar de generar un error, por lo que conviene validar la entrada primero.
  • La precisión es limitada. Internamente el valor se maneja como un número de punto flotante. Los enteros muy grandes pueden perder precisión y producir un resultado inexacto. Para conversión de bases con precisión arbitraria, utiliza la extensión GMP con gmp_init() especificando una base.

Cuándo usar una función más específica

Si siempre conviertes hacia o desde la base 10, las funciones dedicadas son más claras y ligeramente más rápidas:

Usa base_convert() cuando ninguna de las bases sea 10 (por ejemplo, hex → binario) o cuando la base sea algo inusual como la base 36 (frecuentemente usada para IDs cortos y compatibles con URL).

Conclusión

base_convert() es la herramienta de propósito general de PHP para mover un número entero entre cualquier par de sistemas numéricos desde la base 2 hasta la base 36. Recuerda que devuelve un string en minúsculas, ignora fracciones y dígitos inválidos, y está limitada por la precisión de punto flotante para valores muy grandes. Para las conversiones habituales de decimal a X, los helpers dedicados dec*() / *dec() suelen ser la mejor opción.

Práctica

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