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

标签 string lua escaping hex string-literals

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

“你好\x77\x6f\x72\x6c\x64”

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

最佳答案

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

请注意使用长字符串,它不会解释转义序列。如果你在原始代码中使用短字符串(在引号中),那么 \x 将被默默地转换为 x,因为 Lua 5.1 这样做不理解\x。 Lua 5.2 及更高版本提示它无法理解的转义序列。

关于string - 如何在 lua 字符串文字中嵌入十六进制值(即\x 等价物),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966782/

相关文章:

string - 日期与字符串操作 Swift 2 最佳实践

java - 如何在字符串中找到空格?

io - 将数字以二进制格式写入lua文件中

xslt - 使用 XSLT 取消转义 HTML 实体

python - 在 Python 中将转义字符写入 Csv 文件

c - 指或不指

ruby - 算法删除元音,意外结果

c++ - 有没有用 Luabridge 向 Lua 公开 sf::Event 的好方法?

c++ - 使用继承的 luabind 和 std::shared_ptr

javascript - 用 JavaScript 替换 URL 中的所有特殊字符,如 'é'