gpt4 book ai didi

go - 将数组中的几个字节转换为 Go 中的另一种类型

转载 作者:IT王子 更新时间:2023-10-29 02:06:31 25 4
gpt4 key购买 nike

我昨天才开始使用 Go,所以我提前为这个愚蠢的问题道歉。

假设我有一个字节数组,例如:

func main(){
arrayOfBytes := [10]byte{1,2,3,4,5,6,7,8,9,10}
}

现在,如果我想获取该数组的前四个字节并将其用作整数怎么办?或者我有一个看起来像这样的结构:

type eightByteType struct {
a uint32
b uint32
}

我能否轻松地获取数组的前 8 个字节并将其转换为 eightByteType 类型的对象?

我知道这是两个不同的问题,但我认为它们的答案可能相似。我查看了文档,但没有看到一个很好的例子来实现这一点。

能够将字节 block 转换为任何东西是我真正喜欢 C 的地方之一。希望我仍然可以在 Go 中做到这一点。

最佳答案

encoding/binary ,以及 bytes.Buffer

TL;DR 版本:

import (
"encoding/binary"
"bytes"
)

func main() {
var s eightByteType
binary.Read(bytes.NewBuffer(array[:]), binary.LittleEndian, &s)
}

这里有几点需要注意:我们传递数组[:],或者你可以将你的数组声明为一个 slice ([]byte{1, 2, 3, 4, 5})让编译器担心大小等,eightByteType 将无法按原样 (IIRC) 工作,因为 binary.Read 不会触及私有(private)字段。这会起作用:

type eightByteType struct {
A, B uint32
}

关于go - 将数组中的几个字节转换为 Go 中的另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4308385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com