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

时间:2015-04-30 11:40:49

标签: string lua escaping hex string-literals

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

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

我怎样才能在Lua 5.1中做同样的事情?

2 个答案:

答案 0 :(得分:8)

从Lua 3.1开始,你可以在字符串自由派中使用 decimal 转义符。

从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)

请注意使用长字符串,它不解释转义序列。如果您使用原始代码中的短字符串(引号),那么\x将被静默转换为x,因为Lua 5.1无法理解\x 。 Lua 5.2及其后来抱怨它不理解的转义序列。

答案 1 :(得分:3)

(来自Lua 5.1 reference

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

"\72ell\111""hello"

相同