如何在 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 中做同样的事情?
您可以使用 \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 及更高版本抱怨它不理解的转义序列。
在各种语言中,您可以使用 \x 转义序列将十六进制值嵌入字符串文字中:
"hello \x77\x6f\x72\x6c\x64"
如何在 Lua 5.1 中做同样的事情?
您可以使用 \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 及更高版本抱怨它不理解的转义序列。