[]bytestruct

使用这个就不用每种消息类型都去写编解码了

可以向处理 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)
}