doushi3803 2011-11-07 16:36
浏览 58
已采纳

在Go中使用编码/二进制进行字节尾数转换

I got the runtime error message 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)
}

I wish to use the endian auto convert function, how could I do? By the way, is there more efficient way?

  • 写回答

2条回答 默认 最新

  • dongyuan9149 2011-11-07 20:46
    关注

    Use exported fixed size fields. For example,

    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)
    }
    

    Output:

    t1: {[97 98 99 100 101] 1234}
    t2: {[97 98 99 100 101] 1234}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上