[英]Parsing Hex Numbers from \xNN Format in Lua
我正在閱讀一些格式如下的字符串:Lua 5.3 中的“\x0f\x14\xab”。 這些字符串包含我想提取的十六進制數字(在“\x”字符之間)。 例如,我應該能夠從示例中解析“0f”、“14”和“ab”(字符串格式很好)。 我怎樣才能做到這一點?
local text = "\\x0f\\x14\\xab"
您只需將字符串與包含兩個十六進制數字的模式匹配即可。
for hex in text:gmatch("%x%x") do print(hex) end
這也是一個 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
... 以字節為單位的十六進制:gmatch(".") do str = string.format("%02X", string.byte(hex)) print(str) end ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.