javascript

Conversiones de números en JavaScript: Binario, Octal, Hexadecimal y Decimal

Introducción

Hoy veremos cómo podemos convertir números a una base distinta en JavaScript. Es decir, cómo hacer la operación (y lo inverso) para convertir un número de determinada a base a otra.

Por ejemplo, convertir binario a octal, binario a decimal, decimal a hexadecimal y todas esas conversiones.

Para ello, no utilizaremos más que los métodos que le lenguaje provee; nada de librerías externas o algoritmos complicados.

Las funciones que usaremos

Usaremos dos funciones: parseInt y toString. Aquí un pequeño repaso:

La función parseInt recibe el primer argumento que será parseado o casteado a entero, y un segundo argumento (opcional) que indica la base desde la que estamos convirtiendo; por defecto es la base 10, la cual es decimal.

Y toString es una función que convierte un número (aunque también arreglos y otras cosas) a cadena.

Como argumento (al menos cuando convertimos números) acepta la base a la que estamos convirtiendo, que por defecto es 10. Su documentación está aquí.

Estas dos funciones nos ayudarán a convertir distintas bases.

Convertir decimal a otras bases

Primero veremos cómo convertir la base que usamos normalmente. a otras bases. En resumen…

Convertiremos decimal a binario, decimal a octal y a hexadecimal. Para esto usamos la función toString.

/**
 * Desde decimal a otras bases
 * parzibyte.me/blog
 * @author parzibyte
 */ 
 let decimal = 255; // Este número lo iremos convirtiendo a todas las bases
 
 // Decimal a binario
 let decimalEnBinario = decimal.toString(2); // A la base 2
 console.log("El número decimal %s en binario es %s", decimal, decimalEnBinario);
 
 // Decimal a octal
 let decimalEnOctal = decimal.toString(8); // A la base 8
 console.log("El número decimal %s en octal es %s", decimal, decimalEnOctal);
 
 // Decimal a hexadecimal
 let decimalEnHexadecimal = decimal.toString(16); // A la base 16
 console.log("El número decimal %s en hexadecimal es %s", decimal, decimalEnHexadecimal);

Principalmente vemos que tenemos el número decimal, representado como un entero. Para convertirlo a otra base, ejecutamos: decimal.toString(BASE) en donde base es la base a la que vamos a convertir.

Por ejemplo, si es a binario, la base es 2. Si es a octal 8 y si es a hexadecimal es 16. Eso regresará una cadena representando el número.

Ahora veamos la operación inversa

Convertir de otras bases a decimal

Ya hicimos la conversión de decimal a binario, octal y hexadecimal; pero no hemos visto cómo hacer la operación inversa. Vamos a ver cómo usar parseInt para convertir de binario, octal y hexadecimal a decimal.

Para ello, llamamos a parseInt con la cadena que representa al número en otra base, y como segundo argumento le pasamos la base en la que está.

Es decir, si le pasamos un binario entonces la base sería 2. Eso devolverá un entero en base 10; o sea, base decimal.

/**
 * Desde otras bases a decimal
 * parzibyte.me/blog
 * @author parzibyte
 */// Binario a decimal
let binario = "1100"; // 12
let binarioEnDecimal = parseInt(binario, 2); // La base es 2
console.log("El número binario %s en decimal es %s", binario, binarioEnDecimal);
 
// Octal a decimal
let octal = "60"; // 48
let octalEnDecimal = parseInt(octal, 8); // La base es 8
console.log("El número octal %s en decimal es %s", octal, octalEnDecimal);
 
// Hexadecimal a decimal
let hexadecimal = "FF"; // 255
let hexadecimalEnDecimal = parseInt(hexadecimal, 16); // La base es 16
console.log("El número hexadecimal %s en decimal es %s", hexadecimal, hexadecimalEnDecimal);

La llamada es casi igual, siempre llamamos a parseInt con la cadena que representa al número, pero cambia la base.

Eso fue para convertir de decimal a otras bases, y de otras bases a decimal, pero, ¿cómo convertimos entre distintas bases? por ejemplo, convertir de octal a binario.

Aquí traigo la solución 😉

Convertir números de distintas bases usando JavaScript

Para esto no se me ocurrió algo mejor que lo que seguramente se le ocurrió al lector en este punto del post: convertir primero a decimal y luego a la base deseada. El código habla mejor que yo:

/**
 * ¿Y para convertir entre distintas bases que no sean decimales?
 * muy fácil, convertimos primero a decimal y luego ese número a la otra base
 * parzibyte.me/blog
 * @author parzibyte
*/ 
// Por ejemplo, binario a hexadecimal
let otroBinario = "1011"; // El 11
let decimalTemporal = parseInt(otroBinario, 2); // Desde la base 2
let otroHexadecimal = decimalTemporal.toString(16); // Hacia la base 16
 
console.log("El binario %s equivale a %s en hexadecimal", otroBinario, otroHexadecimal);
 
// O podemos hacerlo en una sola operación:
let convertido = parseInt(otroBinario, 2).toString(16);
console.log("Si lo hacemos en una línea, el binario %s se convierte en el hexadecimal %s", otroBinario, convertido);

En ese caso convertimos un binario a hexadecimal; y hay dos maneras. La primera es ser redundante, primero almacenar el resultado en otra variable y más tarde esa variable convertirla a la otra base (hexadecimal).

La segunda forma es en una línea, en donde el proceso es el mismo pero nos ahorramos una variable. Ambos resultados son exactamente los mismos, pero en el primer ejemplo se explica mucho mejor.

Por cierto, el 11 en hexadecimal es B, porque recuerda que la A es 10 y F 15.

Conclusión

Así podemos intercambiar de octal a hexadecimal, binario a octal y todo lo que se nos ocurra.

Con eso terminamos el post de conversiones numéricas en JavaScript. Espero traer más sobre matemáticas discretas muy pronto.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.