2011-08-23 14 views
21

Estoy leyendo en muchas líneas de datos hexadecimales. Vienen como cadenas y los analizo para line_codes que me dicen qué hacer con el resto de los datos. Una línea establece la palabra más significativa de una dirección (MSW), otra línea establece la menos significativa (LSW).Cómo convierto una cadena de dígitos hexadecimales al valor que representa en Lua

Necesito concatenarlos juntos de tal manera que si MSW = "00ff" y LSW = "f10a" la dirección sería 00fff10a.

Este

todo ha ido bien, pero entonces se suponía que comprobar si la dirección era entre un determinado conjunto de valores:

if address <= "007FFFh" and address >= "000200h" then 
    print "I'm in" 
end 

Como probablemente sabes, Lua no es un fan de este ya que me da un error al usar <= y >= con cadenas.

¿Hay alguna manera de convertir la cadena en hexadecimal, de modo que "FFFF" se convierta en 0xFFFF?

+13

Nuevo juego de beber: haz una foto cada vez que alguien menciona que Lua no es un acrónimo. – Alex

Respuesta

31

Se utilizan tonumber:

local someHexString = "03FFACB" 
local someNumber = tonumber(someHexString, 16) 

Nota que los números no están en hexadecimal. Tampoco están en decimal, octal o cualquier otra cosa. Son solo números. El número 0xFF es el mismo número que 255. "FF" y "255" son representaciones de cadena del mismo número.

+0

Me salvó de nuevo Nicol Bolas, gracias :) – Sambardo

+0

Bueno, todavía no lo he probado, pero estoy seguro de que hará lo que necesito cuando regrese a él jaja. – Sambardo

Cuestiones relacionadas