texto - ¿Cómo convertir números entre diferentes bases en JavaScript?
numero entero javascript (11)
Tu propio método de recursión para crear conversiones base2.
Como lo mencionaron los usuarios anteriores, let n = 13; console.log(n.toString(2));
let n = 13; console.log(n.toString(2));
dará lugar a 13 conversiones de la base 10 a la base 2.
Pero en caso de que si quieres programar lo mismo. He escrito un método recursivo para hacer lo mismo. que simplemente dividir por 2 y luego contar los residuos.
// @author Tarandeep Singh :: Created recursive converter from base 10 to base 2
// @date : 2017-04-11
// Convert Base 10 to Base 2, We should reverse the output
// For Example base10to2(10) = "0101" just do res = base10to2(10).split('''').reverse().join();
function base10to2(val, res = '''') {
if (val >= 2) {
res += '''' + val % 2;
return base10to2(val = Math.floor(val / 2), res);
} else {
res += '''' + 1
return res;
}
}
let n = 13;
var result = base10to2(n).split('''').reverse().join();
document.write(`Converting ${n} into Base2 is ${result}`);
Me gustaría convertir números entre diferentes bases, como hexadecimal y decimal.
Ejemplo: ¿Cómo convertir hexadecimal 8F
a decimal?
Bueno, hice una función que podría traducir de la base 10 a cualquier base. (Esto depende de cuántas cadenas tengas en la matriz A
, si es más que eso + 10 se quedará sin símbolos), y casi lloré cuando descubrí que podrías hacerlo en menos de 10 caracteres con eso. ..
Agregue un marcador y como URL inserte esto ... Lo he hecho de manera larga pero personal. Al menos, la mía puede usar una base que es más alta que 36. Puedes agregar más símbolos, pero si quieres, puedo hacerlo por ti ...
var X = prompt("Choose your number");
var Y = prompt("Choose your base");
var Z = [];
var M = -1;
var A = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
var B = function() {
for (i = X; 0 < i; i = Math.floor(i / Y)) {
if(i % Y >= 10) {
Z.push(A[i % Y - 10]);
} else {
Z.push(i % Y);
}
M = M + 1;
}
for (j = M; j >= 0; j--) {
document.write(Z[j]);
}
};
B(); // Call function
Especifique el radix que desea utilizar como parámetro.
NOTA: Esto solo funciona para convertir de bases 2-36 a decimal.
parseInt(string, radix)
parseInt("80", 10) // results in 80
parseInt("80", 16) // results in 128
// etc
He escrito una función para convertir una cadena de JavaScript de una base a otra, con la base original y la nueva base especificada como parámetros.
function convertFromBaseToBase(str, fromBase, toBase){
var num = parseInt(str, fromBase);
return num.toString(toBase);
}
alert(convertFromBaseToBase(10, 2, 10));
Llegué a este post que necesitaba convertir de base 10 a 62 y viceversa. Si bien las soluciones aquí son excelentes, parseInt
y toString
solo admiten base 2 a 36. Así que si alguien se encuentra en una posición similar a la que necesita base 2 a 62, he pegado mi solución a continuación.
https://gist.github.com/ryansmith94/91d7fd30710264affeb9
function convertBase(value, from_base, to_base) {
var range = ''0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/''.split('''');
var from_range = range.slice(0, from_base);
var to_range = range.slice(0, to_base);
var dec_value = value.split('''').reverse().reduce(function (carry, digit, index) {
if (from_range.indexOf(digit) === -1) throw new Error(''Invalid digit `''+digit+''` for base ''+from_base+''.'');
return carry += from_range.indexOf(digit) * (Math.pow(from_base, index));
}, 0);
var new_value = '''';
while (dec_value > 0) {
new_value = to_range[dec_value % to_base] + new_value;
dec_value = (dec_value - (dec_value % to_base)) / to_base;
}
return new_value || ''0'';
}
También puede convertir el número en hexadecimal a decimal de la siguiente manera:
var a="8F";
var b=a.split("");
var result=0;var hex_multiplier=1;
for(var i=0;i<b.length;i++){
result +=parseInt(b[i],16)*hex_multiplier;
hex_multiplier *=16;
}
console.log(result);
donde puede cambiar a con cualquier número hexadecimal y obtener el resultado en forma decimal.
Usando la función parseInt :
var noInBase10 = parseInt(''8F'',16);
Usualmente uso esta función para convertir desde diferentes bases.
Por ejemplo, devuelve "11111111" para ambos casos: convertBase ("ff", 16, 2) o convertBase (0xFF, 16, 2)
var convertBase = function(val, base1, base2) {
if (typeof(val) == "number") {
return parseInt(String(val)).toString(base2);
} else {
return parseInt(val.toString(), base1).toString(base2)
};
}
Verifica el código JS completo para convertirlo en base diferente.
/**
* Convertir de / a binario / decimal / hexadecimal en JavaScript * https://gist.github.com/shamshul2007/ * Copyright 2012-2015, Shamshul * Licenciado bajo la licencia MIT * http://www.opensource.org/licenses/mit-license * /
(función(){
var ConvertBase = function (num) {
return {
from : function (baseFrom) {
return {
to : function (baseTo) {
return parseInt(num, baseFrom).toString(baseTo);
}
};
}
};
};
// binary to decimal
ConvertBase.bin2dec = function (num) {
return ConvertBase(num).from(2).to(10);
};
// binary to hexadecimal
ConvertBase.bin2hex = function (num) {
return ConvertBase(num).from(2).to(16);
};
// decimal to binary
ConvertBase.dec2bin = function (num) {
return ConvertBase(num).from(10).to(2);
};
// decimal to hexadecimal
ConvertBase.dec2hex = function (num) {
return ConvertBase(num).from(10).to(16);
};
// hexadecimal to binary
ConvertBase.hex2bin = function (num) {
return ConvertBase(num).from(16).to(2);
};
// hexadecimal to decimal
ConvertBase.hex2dec = function (num) {
return ConvertBase(num).from(16).to(10);
};
//Octal to Decimal
ConvertBase.oct2dec = function (num) {
return ConvertBase(num).from(8).to(10);
};
//Decimal to Octal
ConvertBase.dec2oct = function (num) {
return ConvertBase(num).from(10).to(8);
};
this.ConvertBase = ConvertBase;
})(esta);
/ * * Ejemplo de uso: * ConvertBase.bin2dec (''1111''); // ''15'' * ConvertBase.dec2hex (''82 ''); // ''52'' * ConvertBase.hex2bin (''e2''); // ''11100010'' * ConvertBase.dec2bin (''153''); // ''10011001'' * ConvertBase.hex2dec (''1FE4ED63D55FA51E''); // ''2298222722903156000'' * ConvertBase.oct2dec (''777''); // ''511'' * ConvertBase.dec2oct (''551''); // ''1047'' * /
La API
Para convertir a un número de una cadena hexadecimal:
parseInt(string, radix)
cadena: Requerido. La cadena a analizar
radix: opcional. Un número (de 2 a 36) que representa el sistema de numeración que se utilizará
Para convertir de un número a una cadena hexadecimal:
NumberObject.toString(radix)
- radix: opcional. Especifica el radix base en el que desea que se muestre el número.
Ejemplo de valores radix:
- 2 - El número se mostrará como un valor binario
- 8 - El número se mostrará como un valor octal
- 16 - El número se mostrará como un valor hexadecimal.
Ejemplo de uso
Valor entero a hexadecimal:
>>> i = 10;
10
>>> i.toString(16);
"a"
Cadena hexadecimal a valor entero:
>>> h = "a";
"a"
>>> parseInt(h, 16);
10
Valor entero a decimal:
>>> d = 16;
16
>>> d.toString(10);
"16"