// bytepacket 包示例:二进制封包/解包(小端序,兼容易语言协议,含 GBK 字符串与易语言日期) package main import ( "fmt" "git.zeroonesoft.cn/golib/zogo/bytepacket" ) func main() { // ===== 写入封包 ===== p := bytepacket.NewPacket(nil) p.WriteInt32(100) p.WriteUInt16(200) _ = p.WriteString("hello") _ = p.WriteStringGbk("中文GBK") _ = p.WriteBytes([]byte{1, 2, 3}) data := p.GetData() fmt.Printf("封包总长: %d 字节\n", len(data)) // ===== 读取封包(按写入顺序读出)===== r := bytepacket.NewPacket(data) fmt.Println("ReadInt32:", r.ReadInt32()) fmt.Println("ReadUInt16:", r.ReadUInt16()) s, _ := r.ReadString() fmt.Println("ReadString:", s) gbk, _ := r.ReadStringGbk() fmt.Println("ReadStringGbk:", gbk) fmt.Println("ReadBytes:", r.ReadBytes()) // ===== GBK / UTF-8 互转 ===== gbkBytes, _ := bytepacket.Utf8ToGbk([]byte("编码转换")) fmt.Printf("UTF-8→GBK: % X\n", gbkBytes) utf8Bytes, _ := bytepacket.GbkToUtf8(gbkBytes) fmt.Println("GBK→UTF-8:", string(utf8Bytes)) // ===== 易语言日期时间(float64 天数,起点 1899-12-30)===== d := bytepacket.NewPacket(nil) d.WriteFloat64(45292.5) // ≈ 2024-01-01 12:00:00 t := d.ReadElangDateTime() fmt.Println("ReadElangDateTime:", t.Format("2006-01-02 15:04:05")) }