如何在 lua 字符串文字中嵌入十六进制值(即 \x 等价物)

How to embed hex values in a lua string literal (i.e. \x equivalent)

在各种语言中,您可以使用 \x 转义序列将十六进制值嵌入字符串文字中:

"hello \x77\x6f\x72\x6c\x64"

如何在 Lua 5.1 中做同样的事情?

(来自Lua 5.1 reference)

您可以使用 \ddd 转义序列在 Lua 的字符串文字中嵌入 decimal 值,其中 ddd 是一个序列最多三个 十进制数字 。例如:

"ell1" 等同于 "hello"

从 Lua 3.1 开始,您可以在自由字符串中使用 十进制 转义。

从 Lua 5.2 开始,您可以在字符串文字中使用十六进制转义。

在Lua 5.1中,你可以事后转换十六进制转义:

s=[[hello \x77\x6f\x72\x6c\x64]]
s=s:gsub("\x(%x%x)",function (x) return string.char(tonumber(x,16)) end)
print(s)

请注意 长字符串 的使用,它们不解释转义序列。如果您在原始代码中使用 short strings(引号),则 \x 将自动转换为 x,因为 Lua 5.1 会不明白\x。 Lua 5.2 及更高版本抱怨它不理解的转义序列。