在 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]) 出了问题。我应该用什么来替换它?我有遗漏什么吗?

点赞
用户1009479
用户1009479

以下是翻译后的结果(保留了 Markdown 格式):

`t[i] = string.byte(str[i])` 是错误的写法,正确的应该是:

`t[i] = string.byte(str, i)` 
2013-10-31 04:40:26