Подтвердить что ты не робот

Как преобразовать строку шестнадцатеричных цифр в значение, которое она представляет в 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?

4b9b3361

Ответ 1

Вы используете tonumber:

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

Обратите внимание, что цифры не в шестнадцатеричном формате. Они также не являются десятичными, восьмеричными или чем-либо еще. Они просто цифры. Число 0xFF совпадает с номером 255. "FF" и "255" представляют собой строковые представления того же числа.