我正在尝试编写一个读取 RPM 文件的应用程序。每个块的开头都有一个魔术字符[4]byte。这是我的结构type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16}我正在尝试执行以下操作:lead := Lead{}lead.Magic = buffer[0:4]我在网上搜索,不知道如何从切片到数组(不复制)。我总是可以制作 Magic []byte(甚至uint64),但我更好奇我将如何从类型[]byte变为[4]byte如果需要?
3 回答
忽然笑
TA贡献1806条经验 获得超5个赞
内置方法copy只会将切片复制到切片,而不是将切片复制到数组。
你必须欺骗复制认为数组是一个切片
copy(varLead.Magic[:], someSlice[0:4])
或者使用 for 循环进行复制:
for index, b := range someSlice {
varLead.Magic[index] = b
}
或者像 zupa 一样使用文字。我已经添加到他们的工作示例中。
- 3 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消