3 回答
TA贡献1796条经验 获得超10个赞
我相信它们可以完美运行。但就我而言,我对解析作为网络数据包接收的 []byte 缓冲区更感兴趣。我使用以下方法来解析缓冲区。
var data []byte // holds the network packet received
opcode := binary.BigEndian.Uint16(data) // this will get first 2 bytes to be interpreted as uint16 number
raw_data := data[2:len(data)] // this will copy rest of the raw data in to raw_data byte stream
从结构体构造 []byte 流时,可以使用以下方法
type packet struct {
opcode uint16
blk_no uint16
data string
}
pkt := packet{opcode: 2, blk_no: 1, data: "testing"}
var buf []byte = make([]byte, 50) // make sure the data string is less than 46 bytes
offset := 0
binary.BigEndian.PutUint16(buf[offset:], pkt.opcode)
offset = offset + 2
binary.BigEndian.PutUint16(buf[offset:], pkt.blk_no)
offset = offset + 2
bytes_copied := copy(buf[offset:], pkt.data)
我希望这提供了关于如何将 []byte 流转换为 struct 并将 struct 转换回 []byte 流的一般概念。
- 3 回答
- 0 关注
- 408 浏览
添加回答
举报