首页 > 解决方案 > 将某些内容转换为字节

问题描述

我想使用我找到的以下代码将一个变量(我在这个例子中使用一个 int)转换为一个字节:

func IntToByteArray(num int64) []byte {
    size := int(unsafe.Sizeof(num))
    arr := make([]byte, size)
    for i := 0 ; i < size ; i++ {
        byt := *(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&num)) + uintptr(i)))
        arr[i] = byte(byt)
    }
    return arr
}

func main(){
    println(IntToByteArray(1456))
}

但是它给我的输出是这个:[8/8]0xc00001a0d0 有人可以解释一下为什么我有这个结果吗?究竟什么是字节数组?

标签: arraysgotype-conversionbyte

解决方案


package main

import "fmt"

func IntToByteArray(num int64) []byte {
    r := make([]byte, 8)
    for i := 0; i < len(r); i++ {
        r[i] = byte(num >> (i * 8) & 255)
    }

    return r
}

func main() {
    fmt.Println(IntToByteArray(65280))
}

这假设了小端序。

正如其他人所建议的那样,包含的软件包更加灵活且经过测试。


推荐阅读