意外的符号附近' \'当loadstring字节时

时间:2014-08-23 22:51:15

标签: string lua escaping

尝试创建一个将Lua代码转换为字节然后string.dump的工具时,我收到了错误。

使用的代码:

s = [[
print("hello lua user")
]]

local byte = ""

for i = 1, s:len() do
byte = byte.."\\"..tostring(s:byte(i))
end

-- Creating the function to use in string.dump
f, err = loadstring(byte)

print(err)

local output = string.dump(f)

标题中的错误来自打印err

奇怪的是,如果我打印(字节)然后手动将其粘贴到引用的loadstring内,它就会起作用。

手动粘贴它不会起作用,因为我需要它自动化。

1 个答案:

答案 0 :(得分:0)

你对Lua中的转义序列感到困惑。让我们来看一个更简单的例子:

在使用ASCII的系统中,'\97'相当于'a',所以

print('\97')
print('a')

这两行都会打印字符a,但您要转换的内容是这样的:

print('\\97')

这会打印\97本身,而不是a


要使代码生效,请在获得byte后添加这些代码。

local f1, err1 = loadstring("return '" .. byte .. "'")
byte = f1()

loadstring的此次调用会将'\\97'之类的字符串转换为'\97'