2009-08-26 10 views

Respuesta

45

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) 
  • radix: Opcional. Especifica la raíz base en la que desea que se muestre el número.

valores Ejemplo Base:

  • - El número se mostrará como un valor binario
  • - El número se mostrará como un valor octal
  • - El número se mostrará como un valor hexadecimal

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" 
+0

esto es aún mejor. marcha atrás. – Yves

+0

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. –

+0

@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

9

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 
+0

+1 gracias Russ - lo tengo! – Yves

+0

@Nosredna tiene razón, pero Russ Cam obtuvo la sintaxis correcta para mí, lo cual es más que suficiente. Gracias. – Yves

+1

Downvoters - razones bienvenidas ... –

1

Uso de la función parseInt :

var noInBase10 = parseInt('8F',16); 
2

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));

+0

Sí, este es el camino a seguir. – Ansjovis86

6

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

+0

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

+0

@oooyaya En realidad, sus salidas "2S", la respuesta correcta. Por cierto, use 'var x = 100; x.toString (26); ' –

+0

Esto no mostrará números negativos. Intenta convertir '-1' a la base' 10'. –

4
Por lo general me

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) 
    }; 
} 
+1

¡Simple y ordenado! – NLV

11

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'; 
 
}

+0

¿hay alguna variación para los flotadores? P.ej. ¿cómo puedo convertir '1.3' en la base 64? – Cyoce

+0

No he hecho una personalmente lo siento. –

+1

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

4

El siguiente diagrama puede ayudar. Tenga en cuenta que convertir de base 16 a la base 2 es necesario convertir primero a la base 10 y luego basar 2.

Base conversion

-1

Su método de recursión propia para crear conversiones Base2.

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}`);

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 se puede cambiar una con cualquier número hexadecimal y obtener el resultado en forma decimal.

Cuestiones relacionadas