簡體   English   中英

從 Lua 中的 \xNN 格式解析十六進制數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM