Arrays 将某物转换为字节

Arrays 将某物转换为字节,arrays,go,type-conversion,byte,Arrays,Go,Type Conversion,Byte,我想使用我找到的以下代码将一个变量(本例中使用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(&nu

我想使用我找到的以下代码将一个变量(本例中使用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))
}
func IntToByteArray(num int64)[]字节{
大小:=int(不安全的.Sizeof(num))
arr:=make([]字节,大小)
对于i:=0;i
但它给我的输出是:[8/8]0xc00001a0d0 有人能解释我为什么会有这样的结果吗? 究竟什么是字节数组?

package main
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))
}
输入“fmt” func IntToByteArray(num int64)[]字节{ r:=make([]字节,8) 对于i:=0;i>(i*8)和255) } 返回r } func main(){ fmt.Println(IntToByteArray(65280)) }
这假设没有什么持久性


正如其他人所建议的,包含的包更灵活,经过测试。

这不是字节数组,而是字节片。如果您想知道什么是数组、切片和其他语言基础,请使用
fmt.Println(IntToByteArray(1456))
获得您期望的打印结果。未指定切片的
println
输出。在一般情况下,请使用encoding/binary中的函数。切勿使用不安全的软件包。