假设我有这个C结构
struct Foo
{
uint8_t a;
// 3 bytes of padding
uint32_t b;
}
它在Go中的等价物:
type Foo struct {
a uint8
b uint32
}
我有一个包含C结构的字节切片:
data := []byte { 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 }
将数据导入Go结构的最佳方法是什么(反之亦然)。
请注意,我根据正常的C规则确实要填充。 C结构未打包。
对于打包的结构,我可以这样做:
data := []byte { 0x01, 0x01, 0x02, 0x03, 0x04 }
f := Foo{}
buf := bytes.NewBuffer(data)
err := binary.Read(buf, binary.LittleEndian, &f)
什么是等效的,考虑填充?
答案 0 :(得分:1)
啊我意识到有一种相对简单的方法 - 只需在Go结构中显式添加虚拟填充字节:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Intent data = new Intent();
data.putExtra("data", "12345678");
setResult(RESULT_OK, data);
finish();
}
然后您可以使用type Foo struct {
a uint8
_ [3]byte
b uint32
}