您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

预先定义的Goint类型大小是特定于实现的,是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]
其他 2022/1/1 18:16:03 有598人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶