web-dev-qa-db-ja.com

16進数の文字列をLuaで表す値に変換するにはどうすればよいですか

十六進法データの多くの行を読んでいます。それらは文字列として届き、残りのデータをどう処理するかを教えてくれるline_codesを解析します。 1行はアドレスの最上位ワード(MSW)を設定し、別の行は最下位ワード(LSW)を設定します。

次に、MSW = "00ff"およびLSW = "f10a"の場合、アドレスが00fff10aになるように、これらを連結する必要があります。

これはすべてうまくいきましたが、アドレスが特定の値のセットの間にあるかどうかを確認することになりました。

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

ご存じのとおり、Luaは<=>=を文字列で使用するとエラーが発生するため、これのファンではありません。

「FFFF」が0xFFFFになるように、文字列を16進数に変換する方法がある場合はどうでしょうか。

21
Sambardo

tonumberを使用します:

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

数字は16進数ではないことに注意してください。また、10進数、8進数、またはその他のものでもありません。それらは単なる数字です。番号0xFFは255と同じ番号です。「FF」と「255」は同じ番号の文字列表現です。

32
Nicol Bolas