猿问

如何将切片转换为数组?

我正在尝试编写一个读取 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如果需要?


慕的地8271018
浏览 262回答 3
3回答

忽然笑

内置方法copy只会将切片复制到切片,而不是将切片复制到数组。你必须欺骗复制认为数组是一个切片copy(varLead.Magic[:], someSlice[0:4])或者使用 for 循环进行复制:for index, b := range someSlice {    varLead.Magic[index] = b}或者像 zupa 一样使用文字。我已经添加到他们的工作示例中。

天涯尽头无女友

您已在该结构中分配了四个字节,并希望为该四字节部分分配一个值。没有复制就没有概念上的方法来做到这一点。看看copy内置的如何做到这一点。

慕雪6442864

试试这个:copy(lead.Magic[:], buf[0:4])
随时随地看视频慕课网APP

相关分类

Go
我要回答