2011-08-23 5 views
21

Sto leggendo molte righe di dati esadecimali. Vengono come stringhe e io li analizzo per line_codes che mi dicono cosa fare con il resto dei dati. Una riga imposta una parola più significativa di un indirizzo (MSW), un'altra riga imposta la meno significativa (LSW).Come convertire una stringa di cifre esadecimali in valore che rappresenta in Lua

Ho quindi bisogno di concatenare quelli insieme in modo tale che se MSW = "00ff" e LSW = "f10a" l'indirizzo sarebbe 00fff10a.

Questo

tutto è andato bene, ma poi avrei dovuto controllare se l'indirizzo è stato tra un certo insieme di valori:

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

Come tutti probabilmente sapete, Lua non è un fan di questo in quanto mi dà un errore utilizzando <= e >= con stringhe.

Se esiste un modo per convertire la stringa in esadecimale, in modo che "FFFF" diventi 0xFFFF?

+13

Nuovo gioco da bere: fai uno scatto ogni volta che qualcuno fa notare che Lua non è un acronimo. – Alex

risposta

31

si utilizza tonumber:

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

Nota che i numeri non sono in esadecimale. Né sono decimali, ottali o qualsiasi altra cosa. Sono solo numeri. Il numero 0xFF è lo stesso numero di 255. "FF" e "255" sono rappresentazioni di stringa dello stesso numero.

+0

Salvato di nuovo Nicol Bolas, grazie :) – Sambardo

+0

Beh, non l'ho ancora provato, ma sono sicuro che farà quello che mi serve quando tornerò a lui haha. – Sambardo