如何在Lua中将十六进制数字字符串转换为它所代表的值?

我正在读取很多十六进制数据行。它们作为字符串进入,并对它们进行解析以获得line_codes,这些代码告诉我如何处理其余的数据。一行设置地址的最高有效字(MSW),另一行设置最低有效字(LSW)。

然后,我需要将它们连接在一起,使得如果MSW =“00ff”和LSW =“f10a”地址将是00fff10a。

这一切都进行得很顺利,但是我应该检查地址是否在一定的一组值之间:

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

正如您可能知道的那样,Lua不喜欢这种方式,因为它使用<=>=与字符串会导致错误。

是否有一种方法可以将字符串转换为十六进制,因此"FFFF"将变成0xFFFF?

原文链接 https://stackoverflow.com/questions/7165577

点赞
stackoverflow用户734069
stackoverflow用户734069

你使用了 tonumber

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

请注意,数字并不是十六进制,也不是十进制、八进制或其他的任何东西。它们只是数字。0xFF 这个数字和 255 是相同的数字。"FF" 和 "255" 是同一个数字的字符串表示形式。

2011-08-23 18:13:43