Lua:防止二进制代码中出现回车符

我正在尝试从二进制文件中读取一块内容。这个很好用,但是每当代码中有0x0A时,Lua就会插入0x0D并将其变成一个换行符,这会破坏文件。我该如何防止这种情况发生?我查看了几个源代码用于编写二进制文件,它们都使用与我相同的io.write()函数。我还是Lua的新手,所以可能我错过了什么。以下是我的代码:

` file = io.open(filepath,'rb') file:seek(“set”) file:seek(“cur”,startoffset) filecontent = file:read(endoffset-startoffset) io.output(test.tmp) io.write(filecontent) `

原文链接 https://stackoverflow.com/questions/8960149

点赞
stackoverflow用户734069
stackoverflow用户734069

我检查了几个编写二进制文件的源代码,它们使用与我相同的 io.write() 函数。

不,它们没有。它们使用 file:write。这有所不同。一个在给定的文件句柄上工作,另一个在“默认输出文件”上工作,它始终以 文本 打开。

你想要的正确的 Lua 代码是这样的:

local file = assert(io.open(filepath, "rb"), "无法打开文件以进行读取。")
local filecontent = file:read("*a")
file:close()
file = assert(io.open("temp.tmp", "wb"),  "无法打开文件以进行写入。")
file:write(filecontent)
file:close()
2012-01-22 10:03:16