Me gustaría convertir números entre diferentes bases, como hexadecimal y decimal.¿Cómo se convierten números entre diferentes bases en JavaScript?
Ejemplo: ¿cómo convertir hexadecimal a decimal 8F
?
Me gustaría convertir números entre diferentes bases, como hexadecimal y decimal.¿Cómo se convierten números entre diferentes bases en JavaScript?
Ejemplo: ¿cómo convertir hexadecimal a decimal 8F
?
La API
Convertir en un número de una cadena hexadecimal:
parseInt(string, radix)
cadena: es obligatorio. La cadena a analizar
radix: Opcional. Un número (desde 2 a 36) que representa el sistema de numeración que se utilizará
Para convertir de un número en una cadena hexadecimal:
NumberObject.toString(radix)
valores Ejemplo Base:
Ejemplo de Uso
valor entero para hex:
>>> i = 10;
10
>>> i.toString(16);
"a"
cadena Hex a entero de valor:
>>> h = "a";
"a"
>>> parseInt(h, 16);
10
valor entero para decimal:
>>> d = 16;
16
>>> d.toString(10);
"16"
Especifique la base que desea usar como parámetro.
NOTA: Esto sólo funciona para convertir bases de 2-36 a decimal.
parseInt(string, radix)
parseInt("80", 10) // results in 80
parseInt("80", 16) // results in 128
// etc
Uso de la función parseInt :
var noInBase10 = parseInt('8F',16);
He escrito una función para convertir una cadena JavaScript de una base a otra base, con la base original y la nueva base especificado como parámetros.
function convertFromBaseToBase(str, fromBase, toBase){
\t var num = parseInt(str, fromBase);
return num.toString(toBase);
}
alert(convertFromBaseToBase(10, 2, 10));
Sí, este es el camino a seguir. – Ansjovis86
Bueno, hice una función que se podría traducir de la base 10 a cualquier base. (Esto depende de cuántas cadenas tenga en el arreglo A
, si es más de ese + 10 se acabarán los símbolos), y casi lloro cuando descubrí que podía hacerlo en menos de 10 caracteres con eso. ..
Agregue un marcador y como URL inserte esto ... Lo he hecho de una manera larga pero personal. Al menos, la mina puede usar una base que es superior a 36. Se pueden añadir más símbolos de ti mismo, pero si quieres, puedo hacerlo para usted ...
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
Creo que tienes un error de conteo en alguna parte. 100.toString (26) = "3M" pero el tuyo generará "3O" (tres oh, no tres cero) – oooyaya
@oooyaya En realidad, sus salidas "2S", la respuesta correcta. Por cierto, use 'var x = 100; x.toString (26); ' –
Esto no mostrará números negativos. Intenta convertir '-1' a la base' 10'. –
usa 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)
};
}
¡Simple y ordenado! – NLV
I Llegó a este puesto la necesidad de convertir de la base 10 a 62 y viceversa. Si bien las soluciones aquí son excelentes, parseInt
y toString
solo son compatibles con la base 2 a 36.Entonces, si alguien se encuentra en una posición similar a la que necesita la base 2 a la 62, he pegado mi solución a continuación.
https://gist.github.com/ryansmith94/91d7fd30710264affeb9
function convertBase(value, from_base, to_base) {
var range = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/'.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';
}
¿hay alguna variación para los flotadores? P.ej. ¿cómo puedo convertir '1.3' en la base 64? – Cyoce
No he hecho una personalmente lo siento. –
Parece que hay errores en alguna parte. La conversión de "111222444abcdef" de la base 16 a 10 y la posterior da como resultado "111222444abcdf0" – expert
Como se ha mencionado por los usuarios anteriores let n = 13; console.log(n.toString(2));
dará lugar a la conversión 13 de la base 10 a la base 2.
Pero en el caso si se desea programar la misma. He escrito un método recursivo para hacer lo mismo. que simplemente se divide por 2 y luego cuenta los restos.
// @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}`);
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 se puede cambiar una con cualquier número hexadecimal y obtener el resultado en forma decimal.
esto es aún mejor. marcha atrás. – Yves
No veo cómo se convierte el primero a hexadecimal. ¿Puedes explicarlo por favor? Además, el segundo dará como resultado hexadecimal y no decimal como está etiquetado. –
@Russ Cam: el primero toma la base como parámetro - hexadecimal es la base 16 - y devuelve una cadena de la representación de ese número en esa base. Usted es incorrecto sobre el segundo, de hecho da como resultado un valor decimal. – aehlke