Lua:用二进制代码防止回车

时间:2012-01-22 09:26:20

标签: insert binary lua line break

我正在尝试从二进制文件中读取一个块。这样可以正常工作,但是,只要代码中有0x0A,Lua就会插入一个0x​​0D并将其转换为换行符,这会破坏文件。我怎么能防止这种情况?我检查了几个用于编写二进制文件的源代码,他们使用相同的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)

1 个答案:

答案 0 :(得分:3)

  

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

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

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

local file = assert(io.open(filepath, "rb"), "Could not open file for reading.")
local filecontent = file:read("*a")
file:close()
file = assert(io.open("temp.tmp", "wb"),  "Could not open file for writing.")
file:write(filecontent)
file:close()