我在向Lua中的二进制文件写入字符串时遇到问题。有一个现有的例子,我试着修改它。请看:在Lua中将字符串写入二进制文件
function StringToBinary()
local file = io.open("file.bin", "wb")
local t = {}
local u = {}
local str = "Hello World"
file:write("string len = " ..#str ..'\n')
math.randomseed(os.time())
for i=1, #str do
t[i] = string.byte(str[i])
file:write(t[i].." ");
end
file:write("\n")
for i=1, #str do
u[i] = math.random(0,255)
file:write(u[i].." ");
end
file:write("\n"..string.char(unpack(t)))
file:write("\n"..string.char(unpack(u)))
file:close()
end
file:write(t[i].." ")
和file:write(u[i].." ")
写有整数值两个表。然而,我最后两次写道:unpack(t)
显示原始文本,而unpack(u)
显示二进制文件。
这可能是string.byte(str[i])
这是错误的。我应该用什么替换它?我错过了什么吗?
有什么问题比其他编制?你的问题在哪里? –
如果此代码正常工作(编译问题除外),就像您在下面评论的一样,请编辑您的问题。你的问题并不清楚哪些问题,人们可能会感到困惑,认为这是错误的,仍然需要解决。 –
(语义点)Lua字符串是二进制的:它们是不可变的,计数的字节序列。没有假设也没有要求它们是来自任何字符集的字符的一种或任何编码。当然,函数可以以其他方式处理它们。 –