假设我有这个C结构复制字节数组去结构占比结构填充
struct Foo
{
uint8_t a;
// 3 bytes of padding
uint32_t b;
}
及其等价围棋:
type Foo struct {
a uint8
b uint32
}
而且我有一个包含C结构字节片:
data := []byte { 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 }
什么是最好的方式来获取数据到Go结构(反之亦然)。
请注意,I 确实希望根据正常的C规则填充。 C结构是不包装。
对于包装的结构,我可以做这样的事情:
data := []byte { 0x01, 0x01, 0x02, 0x03, 0x04 }
f := Foo{}
buf := bytes.NewBuffer(data)
err := binary.Read(buf, binary.LittleEndian, &f)
什么是等价的,同时填充进去?
不保证会有一个特定的填充。这显然与C无关。 – Olaf
如果您不想打包结构,则必须序列化并反序列化。 – LPs