2012-04-23 18 views
15

Me gustaría convertir esto: "#FFFFFF" a este: 0xFFFFFF. ¿Cómo es posible sin usar eval?¿Cómo obtener un entero hexadecimal de una cadena en JS?

Gracias de antemano,

+0

Estoy seguro * * esto es un duplicado ... Me gustaría que el "preguntas relacionadas" fueron más inteligentes con respecto a las etiquetas de idioma: -/ –

+1

@ Danny: con "valor hexadecimal", ¿se refiere al valor numérico ** FFFFFF hexadecimal (por ejemplo, 16777215 decimal?). Si es así, simplemente diga "valor numérico", poniendo la palabra "hex" en nos lleva a la tierra de cuerda. Creo que probablemente quisiste decir numérico, sin embargo. –

+1

@ T.J. Crowder edité el título –

Respuesta

33

botar el "#" y utilizar parseInt().

var hex = parseInt(str.replace(/^#/, ''), 16); 

Entonces, si quieres ver en hexadecimal, puede utilizar .toString():

alert(hex.toString(16)); 
+1

Preferiría 'substring()' (como en la respuesta de @TJCrowder) sobre 'replace()', por razones de eficiencia. –

+1

@MarkReed: depende totalmente de lo que OP * realmente * quiera, lo cual no está claro a partir de la pregunta. Puede ser (dada la falta de comillas en '0xFFFFFF') que el OP quiere el valor numérico (que, por supuesto, haría que el título de la pregunta fuera completamente erróneo, ¡no la primera vez!). –

+0

Gracias, funciona –

Cuestiones relacionadas