feat(bytepacket): 自 go-hua 迁入二进制封包工具

- 小端序读写, 兼容易语言协议(GBK 字符串/易语言日期)
- 附测试、examples/bytepacket 例程与包 README
This commit is contained in:
2026-09-20 12:25:35 +08:00
parent b478482f21
commit f9f7c7c92f
4 changed files with 481 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
// 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"))
}