Lua 是很轻量级的脚本语言, 功能也很强大, 但是Lua 的IO 中的文件操作却没有提供直接写入数值的方法, 用file::write写入整数的时候 发现整数是先被转成String, 然后作为String 写入文件的, 这个多半不是期望的结果吧, 那么如何写入二进制数据呢? 这里有一个小技巧, 请看如下代码
local function writebytes(f,x)
local b1=string.char(x%256) x=(x-x%256)/256
local b2=string.char(x%256) x=(x-x%256)/256
local b3=string.char(x%256) x=(x-x%256)/256
local b4=string.char(x%256) x=(x-x%256)/256
f:write(b1,b2,b3,b4)
end
这个是写入32位整数的例子, 以此类推,也很容易得到其他类型的数值写入.
Reference:
1. http://www.lua.org/manual/5.1/manual.html
2. http://*.com/questions/24486294/write-numbers-to-a-file-in-lua-in-binary-format
3. https://github.com/volvet/h264extractor/commit/05ced1047a1823863819e5f6ab48299d8ee1559b