https://github.com/lai323/bytecodec
这个库实现 []byte
到 struct
编解码, 对于要处理特别多结构不同的字节消息
使用这个就不用每种消息类型都去写编解码了
可以向处理 json 一样处理字节数据
package main
import (
"fmt"
"time"
"github.com/lai323/bytecodec"
)
type Header struct {
SerialNo uint16
Time int64
}
type Packet struct {
Header Header
Phone string `bytecodec:"length:11"` // 使用长度固定为 11 的字符串
MsgLength uint8 `bytecodec:"lengthref:Msg"` // 表示这个字段的值是 Msg 的字节长度
Msg string `bytecodec:"gbk"` // 使用 GBK 编码
}
func main() {
p := Packet{
Header: Header{
SerialNo: 1,
Time: time.Now().Unix(),
},
Phone: "18102169375",
Msg: "你好",
}
b, err := bytecodec.Marshal(p)
fmt.Println(fmt.Sprintf("%#v", b), err)
out := &Packet{}
err = bytecodec.Unmarshal(b, out)
fmt.Println(fmt.Sprintf("%#v", out), err)
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.