Разбор шестнадцатеричных чисел из формата \ xNN в Lua - PullRequest
0 голосов
/ 06 мая 2020

Я читаю некоторые строки, отформатированные следующим образом: «\ x0f \ x14 \ xab» в Lua 5.3. Эти строки содержат шестнадцатеричные числа (между символами «\ x»), которые я хотел бы извлечь. Например, я должен уметь разбирать «0f», «14» и «ab» из примера (формат строки подходит). Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Вот и решение LPeg

local lpeg = require 'lpeg'

local hex = lpeg.S('0123456789abcdefABCDEF') ^ 1 / function(s) return tonumber(s, 16) end
local parser = (lpeg.P("\\x")*hex + lpeg.P(1) / error) ^ 1

local text = "\\x0f\\x14\\xab"
print(parser:match(text))

Обычная Lua версия, если она лучше для простых случаев, но если вам нужна большая расширяемость, LPeg - хорошая альтернатива: D

0 голосов
/ 06 мая 2020
local text = "\\x0f\\x14\\xab"

Вы просто сопоставляете строку с шаблоном, содержащим две шестнадцатеричные цифры.

for hex in text:gmatch("%x%x") do print(hex) end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...