Lua: предотвратить возврат каретки в двоичном коде - PullRequest
3 голосов
/ 22 января 2012

Я пытаюсь прочитать кусок из двоичного файла. Это работает нормально, однако, когда в коде есть 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)

1 Ответ

3 голосов
/ 22 января 2012

Я проверил несколько исходных кодов для записи двоичных файлов, и они используют ту же самую функцию 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()
...