问题描述
在使用 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))