У меня есть файл, который я открыл в двоичном виде, как это: local dem = io.open("testdem.dem", "rb")
Я могу читать строки из него просто отлично: print(dem:read(8))
-> HL2DEMO
, однако после этого есть 4-байтовый младший порядок байтов целое число и 4-байтовое число с плавающей запятой (в документах для формата файла не указывается порядок байтов, но поскольку он не указывает мало, как целое число, я должен буду считать его большим). Это не может быть прочитано с read
. Я новичок в LuaJIT FFI и не знаю, как это прочитать. Честно говоря, я нахожу документацию по этому конкретному c аспекту FFI неутешительной, хотя я всего лишь lua программист и не имею большого опыта работы с C. Одна вещь, которую я попробовал, - это создание cdata, но я не думаю, что понимаю:
local dem = io.open("testdem.dem", "rb")
print(dem:read(8))
local cd = ffi.new("int", 4)
ffi.copy(cd, dem:read(4), 4)
print(tostring(cd))
--[[Output
HL2DEMO
luajit: bad argument #1 to 'copy' (cannot convert 'int' to 'void *')
]]--
Резюме:
Цель: чтение целых чисел и чисел с плавающей точкой из двоичных данных.
Ожидаемый результат: lua целое число или число с плавающей запятой, которое я могу затем преобразовать в строку.