gpt4 book ai didi

type-conversion - 如何将 int[] 转换为 uint8[]

转载 作者:IT王子 更新时间:2023-10-29 01:00:47 26 4
gpt4 key购买 nike

所以,我需要你的帮助。我找不到关于该主题的任何内容。 Golang 是一门刚出炉的语言,所以对于像我这样的新手来说很难快速找到答案。

最佳答案

预先声明的 Go int 类型大小是特定于实现的,32 位或 64 位 (Numeric types)。

下面是一个将大端 int 转换为 byte (uint8) 的示例。

package main

import (
"encoding/binary"
"fmt"
"reflect"
)

func IntsToBytesBE(i []int) []byte {
intSize := int(reflect.TypeOf(i).Elem().Size())
b := make([]byte, intSize*len(i))
for n, s := range i {
switch intSize {
case 64 / 8:
binary.BigEndian.PutUint64(b[intSize*n:], uint64(s))
case 32 / 8:
binary.BigEndian.PutUint32(b[intSize*n:], uint32(s))
default:
panic("unreachable")
}
}
return b
}

func main() {
i := []int{0, 1, 2, 3}
fmt.Println("int size:", int(reflect.TypeOf(i[0]).Size()), "bytes")
fmt.Println("ints:", i)
fmt.Println("bytes:", IntsToBytesBE(i))
}

输出:

int size: 4 bytes
ints: [0 1 2 3]
bytes: [0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3]

int size: 8 bytes
ints: [0 1 2 3]
bytes: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3]

关于type-conversion - 如何将 int[] 转换为 uint8[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963078/

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