gpt4 book ai didi

go - 在 Go 中使用编码/二进制进行字节字节序转换

转载 作者:IT王子 更新时间:2023-10-29 01:24:19 25 4
gpt4 key购买 nike

我收到运行时错误消息Write T1 binary.Read: invalid type main.T1

package main

import (
"encoding/binary"
"net"
)

type T1 struct {
f1 [5]byte
f2 int
}

func main() {
conn, _ := net.Dial("tcp", ":12345")
l1 := T1{[5]byte{'a', 'b', 'c', 'd', 'e'}, 1234}
binary.Write(conn, binary.BigEndian, &l1)
}

我想使用字节序自动转换功能,怎么办?请问有没有更高效的方法?

最佳答案

使用导出的固定大小字段。例如,

package main

import (
"bytes"
"encoding/binary"
"fmt"
)

type T struct {
F1 [5]byte
F2 int32
}

func main() {
var t1, t2 T
t1 = T{[5]byte{'a', 'b', 'c', 'd', 'e'}, 1234}
fmt.Println("t1:", t1)
buf := new(bytes.Buffer)
err := binary.Write(buf, binary.BigEndian, &t1)
if err != nil {
fmt.Println(err)
}
err = binary.Read(buf, binary.BigEndian, &t2)
if err != nil {
fmt.Println(err)
}
fmt.Println("t2:", t2)
}

输出:

t1: {[97 98 99 100 101] 1234}
t2: {[97 98 99 100 101] 1234}

关于go - 在 Go 中使用编码/二进制进行字节字节序转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com