我正在尝试编写一个读取 RPM 文件的应用程序。每个 block 的开头都有一个 [4]byte
的 Magic char。
这是我的结构
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]
我正在网上搜索,但不确定如何从 slice 转到数组(无需复制)。我总是可以制作 Magic []byte
(甚至是 uint64
),但我更好奇我将如何从 type []byte
到 [4]byte
如果需要?
最佳答案
内置方法 copy 只会将 slice 复制到 slice 而不是将 slice 复制到数组。
你必须欺骗 copy 让他们认为数组是一个 slice
copy(varLead.Magic[:], someSlice[0:4])
或者使用 for 循环进行复制:
for index, b := range someSlice {
varLead.Magic[index] = b
}
或者像 zupa 那样使用文字。我已经添加到他们的工作示例中。
关于arrays - 如何将 slice 转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073769/