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

问题描述 投票:0回答:2

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

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

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

string lua escaping hex string-literals
2个回答
16
投票

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

print "hello \119\111\114\108\100"

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

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

在 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 及更高版本抱怨它无法理解的转义序列。


4
投票

(摘自Lua 5.1参考资料

您可以使用 \ddd 转义序列将

decimal
值嵌入 Lua 中的字符串文字中,其中
ddd
是最多三个 decimaldigits 的序列。例如:

"\72ell\111"
"hello"

相同
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.