在各种语言中,您可以使用\ x转义序列在字符串文字中嵌入十六进制值:
"hello \x77\x6f\x72\x6c\x64"
我怎样才能在Lua 5.1中做同样的事情?
答案 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)
您可以使用\ddd
转义序列在Lua中的字符串文字中嵌入十进制值,其中ddd
是最多三个十进制数字的序列。例如:
"\72ell\111"
与"hello"