假設我有這個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