Documentation IndexFetch the complete documentation index at: /llms.txtUse this file to discover all available pages before exploring further.
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
ClickHouse launches Claude-powered Agents and House Mates partner program at Open House 2026 Read more →
原生协议基础知识
0 ≤ len < MAX
s := "Hello, world!" // 将字符串长度写入为 uvarint。 buf := make([]byte, binary.MaxVarintLen64) n := binary.PutUvarint(buf, uint64(len(s))) buf = buf[:n] // 写入字符串值。 buf = append(buf, s...)
r := bytes.NewReader([]byte{ 0xd, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, }) // 读取长度。 n, err := binary.ReadUvarint(r) if err != nil { panic(err) } // 检查 n,以防止 OOM 或在 make() 中出现运行时异常。 const maxSize = 1024 * 1024 * 10 // 10 MB if n > maxSize || n < 0 { panic("invalid n") } buf := make([]byte, n) if _, err := io.ReadFull(r, buf); err != nil { panic(err) } fmt.Println(string(buf)) // Hello, world!
00000000 0d 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 |.Hello, world!|
DUhlbGxvLCB3b3JsZCE
data := []byte{ 0xd, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, }
v := int32(1000) // 编码。 buf := make([]byte, 8) binary.LittleEndian.PutUint32(buf, uint32(v)) // 解码。 d := int32(binary.LittleEndian.Uint32(buf)) fmt.Println(d) // 1000
00000000 e8 03 00 00 00 00 00 00 |........|
6AMAAAAAAAA
1
true
0
false
此页面对您有帮助吗?