尝试创建一个将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
内,它就会起作用。
手动粘贴它不会起作用,因为我需要它自动化。
答案 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'
。