首页 > 解决方案 > 如何将 [] 字节转换为整数

问题描述

我正在尝试将一片字节转换为整数,但它不起作用:

https://play.golang.org/p/61Uhllz_qm7

对于两个完全不同的字节片,uint64当我使用这个算法时我得到相同的结果:

func idFromPacket(response []byte) uint64 {
    fmt.Printf("The slice is [%v]\n", response)
    var id uint64
    reader := bytes.NewReader(response)
    binary.Read(reader, binary.BigEndian, &id)
    fmt.Printf("The id is [%d]\n", id)
    return id
}

有人可以告诉我,为什么对于不同的[]byte输入idFromPacket我得到相同的输出?

谢谢

标签: go

解决方案


有人可以告诉我,为什么对于不同的[]byte输入idFromPacket我得到相同的输出?

因为uint64长度为 64 位(8 字节),而您传递的是 80 位(10 字节)。

这比必要的要宽 2 个字节。

然后binary.Read读取前 8 个字节,它们在两个输入中都是零,并0在两种情况下都按预期返回。


推荐阅读