Saltar al contenido

convertir hexadecimal a binario en javascript

Solución:

Puede crear una función que convierta un número hexadecimal en binario con algo como esto:

function hex2bin(hex){
    return ("00000000" + (parseInt(hex, 16)).toString(2)).substr(-8);
}

Para formatear, simplemente complete una cadena con 8 0y concatenas tu número. Luego, para convertir, lo que haces es básicamente obtener una cadena o un número, usa el parseInt función con el valor del número de entrada y su base (base 16 para hexadecimal aquí), luego lo imprime en la base 2 con el toString función. Y finalmente, extrae los últimos 8 caracteres para obtener su cadena formateada.


Edición de 2018:

Como esta respuesta aún se está leyendo, quería proporcionar otra sintaxis para el cuerpo de la función, usando el ES8 (ECMAScript 2017) String.padStart() método:

function hex2bin(hex){
    return (parseInt(hex, 16).toString(2)).padStart(8, '0');
}

Utilizando padStart llenará la cadena hasta que su longitud coincida con el primer parámetro, y el segundo parámetro es el carácter de relleno (espacio en blanco por defecto).

Fin de la edición


Para usar esto en una cadena completa como la suya, use un simple forEach :

var result = ""
"21 23 00 6A D0 0F 69 4C E1 20".split(" ").forEach(str => {
  result += hex2bin(str)
})
console.log(result)

La salida será:

00100001001000110000000001101010110100000000111101101001010011001110000100100000

Puedes usar parseInt y toString para cambiar la base de un número.

function convertNumber(n, fromBase, toBase) {
  if (fromBase === void 0) {
    fromBase = 10;
  }
  if (toBase === void 0) {
    toBase = 10;
  }
  return parseInt(n.toString(), fromBase).toString(toBase);
}
console.log(
  convertNumber("f", 16, 10),
  convertNumber("f", 16, 2),
  convertNumber("1111", 2, 10),
  convertNumber("1111", 2, 16)
);

Desafortunadamente, las respuestas anteriores parecen no funcionar con valores muy grandes (por ejemplo, 512 bits, tan común en la criptografía). Esta solución puede ser un poco más lenta, pero garantiza el manejo de entradas de cualquier longitud.

function hex2bin(hex){
    hex = hex.replace("0x", "").toLowerCase();
    var out = "";
    for(var c of hex) {
        switch(c) {
            case '0': out += "0000"; break;
            case '1': out += "0001"; break;
            case '2': out += "0010"; break;
            case '3': out += "0011"; break;
            case '4': out += "0100"; break;
            case '5': out += "0101"; break;
            case '6': out += "0110"; break;
            case '7': out += "0111"; break;
            case '8': out += "1000"; break;
            case '9': out += "1001"; break;
            case 'a': out += "1010"; break;
            case 'b': out += "1011"; break;
            case 'c': out += "1100"; break;
            case 'd': out += "1101"; break;
            case 'e': out += "1110"; break;
            case 'f': out += "1111"; break;
            default: return "";
        }
    }

    return out;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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