为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 [] 字节转换为整数

如何将 [] 字节转换为整数

Go
Helenr 2022-08-24 17:34:45
我试图将一段字节转换为整数,但它不起作用:https://play.golang.org/p/61Uhllz_qm7对于两个完全不同的字节切片,当我使用此算法时,我得到相同的:uint64func 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}有人可以告诉我,为什么不同的输入我得到相同的输出?[]byteidFromPacket
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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

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

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

然后读取前 8 个字节,这些字节在两个输入中都为零,并在两种情况下按预期返回您。binary.Read0


查看完整回答
反对 回复 2022-08-24
?
森林海

TA贡献2011条经验 获得超2个赞

对于您的用例,您可以将函数替换为以下函数:


func idFromPacket(response []byte) uint64 {

    fmt.Printf("The slice is [%v]\n", response)

    var id uint64

    for _, v := range response {

        id <<= 8

        id |= uint64(v)

    }

    fmt.Printf("The id is [%v]\n", id)

    return id

}


查看完整回答
反对 回复 2022-08-24
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信