networking - 如何将通过网络接收到的 byte slice 转换为结构

标签 networking struct go

是否有将 []byte 转换为结构的库函数?我在客户端上工作以捕获从用 C 编写的服务器发送的结构。

我有这样的结构设置。

type mystruct struct {
    A   uint32
    B   uint16
}

这就是我通过网络读取字节的方式。

var s []byte = make([]byte, 6)
sock.ReadFromUDP(s)
fmt.Println(s)

最佳答案

您可以使用编码/二进制。 来自文档的示例:http://golang.org/pkg/encoding/binary/

package main

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

func main() {
    var pi float64
    b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}
    buf := bytes.NewReader(b)
    err := binary.Read(buf, binary.LittleEndian, &pi)
    if err != nil {
        fmt.Println("binary.Read failed:", err)
    }
    fmt.Print(pi)
}

关于networking - 如何将通过网络接收到的 byte slice 转换为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565280/

相关文章:

go - 如何检测延迟函数 Go 中的 panic(nil) 和正常执行?

c++ - 在 boost::asio 中多次写入单个套接字

c - C 中的 N 叉树

c - 图形程序中的结构指针数组错误

c++ - 嵌套结构和数组 C++

docker - 从 ubuntu 18.04 升级到 18.10 后,docker 容器内没有互联网连接

go - 无法正确读取 CLI 标志

Java RMI 资源

python - 带有自定义图层的 Scapy sr()

android - 始终在手机上检测到网络连接,即使没有网络