如何将int []转换为uint8 []

所以,我需要你的帮助。我找不到关于那个话题的任何东西。Golang是一种新鲜出炉的语言,因此对于像我这样的新手来说很难快速找到答案。

回答:

预先定义的Go

int类型大小是特定于实现的,是32位还是64位(数字类型)。

这是将big-endian ints 转换为bytes(uint8s)的示例。

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]

以上是 如何将int []转换为uint8 [] 的全部内容, 来源链接: utcz.com/qa/430851.html

回到顶部