Lua write 输出奇怪的字节到文件

问题描述

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

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

type PagedStruct struct {
    Data  interface{} `json:"data"`
    Page  int16       `json:"page"`
    Total int16       `json:"total"`
}

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

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

解决方法

使用Lua写入二进制数据时使用二进制开关func ListUsers(w http.ResponseWriter,r *http.Request) { users := []*User{ // get users from db } page := PagedStruct{Data: users,Page: 1,Total: 1} if err := json.NewEncoder(w).Encode(page); err != nil { log.Println(err) } } // or func ListUsers(w http.ResponseWriter,Total: 1} if err := listUsersTemplate.Execute(w,page); err != nil { log.Println(err) } }

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))