首页 > 解决方案 > Lua write 输出奇怪的字节到文件

问题描述

在调试使用 Lua 使用二进制数据编写 BMP 的问题时,我遇到了一个奇怪的问题,即引入了一些字节。

当我们编写 string.char(10) 时,会出现字节 0x0D0A。

local file = io.open("forbchars.bin","w")

local out = {}
for i=1,255 do
    out[#out+1] = string.char(i)
    out[#out+1] = string.char(255)
end

file:write(table.concat(out))

如果您使用十六进制编辑器检查此文件,您会看到 0x0D0A 字节而不是 0x0A (10)。

如何预防?这是Lua的错误吗?

标签: windowsluabin

解决方案


"wb"使用Lua 写入二进制数据时使用二进制开关:

local file = io.open("forbchars.bin","wb")
local out = {}
for i=1,255 do
    out[#out+1] = string.char(i)
    out[#out+1] = string.char(255)
end
file:write(table.concat(out))

推荐阅读