我是Go的新手,正在尝试编写一个读取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]
我正在在线搜索,不确定如何从切片到数组(不进行复制)。我总是可以制作魔术[]byte
(甚至uint64
),但是我对如何从类型转换[]byte
到类型([4]byte
如果需要)感到好奇。
内置方法copy只会将一个切片复制到一个切片,而不是将切片复制到一个数组。
您必须欺骗复制以将数组视为切片
copy(varLead.Magic[:], someSlice[0:4])
或使用for循环进行复制:
for index, b := range someSlice {
varLead.Magic[index] = b
}
或者按照zupa所做的使用文字进行操作。我已添加到他们的工作示例中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句