将某物转换为字节



我想将一个变量(本例中为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有人能解释一下我为什么会有这样的结果吗?字节数组到底是什么?

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))
}

假设是小端序

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

最新更新