44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
// 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"))
|
||
}
|