Arrays 将某物转换为字节
我想使用我找到的以下代码将一个变量(本例中使用int)转换为一个字节: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
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中的函数。切勿使用不安全的软件包。