PHP-TUT-05 Bases de numeración en PHP

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

PHP permite manejar distintas bases de numeración, algo muy habitual y necesario en el mundo de la programación. A menudo debemos vérnoslas con números binarios, octales y hexadecimales además, por supuesto, de los números decimales “de toda la vida”. El lenguaje nos ofrece funciones para manejar estos valores, y cambiar un valor de una base de numeración a otra fácilmente.

CONVERTIR DECIMAL A OTRAS BASES

Podemos convertir un número decimal a alguna de las bases más habituales mediante las funciones dechex(), decoct() y decbin(). Lo vemos en primerCambio.php.

El resultado lo vemos a continuación:

El valor decimal es: 186
El valor binario es: 10111010
El valor octal es: 272
El valor hexadecimal es: ba

Como ves, el cambio de base de numeración no puede ser más fácil y rápido. Además, PHP nos ofrece las funciones inversas, para pasar un número hexadecimal, octal, o binario a decimal. Son hexdec(), octdec() y bindec(), respectivamente. Lo vemos en conversionesADecimal.php.

Pruébalo para ver el resultado. Ten en cuenta que no podemos usar dígitos que no existan en la base de numeración con la que estamos trabajado, Por ejemplo, en un número binario sólo podremos usar los dígitos 0 y 1, en un octal, del 0 al 7, y así, sucesivamente. Además, observa que los valores en distintas bases de numeración los hemos expresado como cadenas (entre comillas). Esto debe ser así siempre en el caso de los binarios. En el caso de los octales, podemos expresarlos sin comillas, precediéndolos con un 0. En el caso de los hexadecimales los precederemos con 0x. Lo vemos en el ejemplo a continuación:

También tenemos una función de conversión entre bases de numeración más flexible. Se trata de base_convert(). Esta función recibe tres argumentos. El primero es el número a convertir, el segundo es la base en la que está y el tercero la base en la que lo queremos. Las bases pueden ir de 2 a 36.

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *