windows - 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的错误吗?
解决方案
"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))
推荐阅读
- elasticsearch - 什么是watcher管理&执行节点
- python - 具有多列的 Pandas 行多索引
- django - 首次加载后 Http Referer 标头更改
- django - 从 http 请求中检索实际文件(用于 os.stat)
- javascript - 如果元素样式显示=“无”,如何捕获
- javascript - 使用其他数组中的元素创建一个新数组
- mysql - 通过 Dockerfile 在 Ubuntu 上安装 MariaDB
- python - 使用 pyparsing 和递归
- ios - Swift 应用程序锁定权限?其他应用?
- php - 使用 print_r() 输出单行的漂亮打印,而不是分层/组织 (PHP)