go - 如何将 [] 字节转换为整数
问题描述
我正在尝试将一片字节转换为整数,但它不起作用:
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
我得到相同的输出?
谢谢
解决方案
有人可以告诉我,为什么对于不同的
[]byte
输入idFromPacket
我得到相同的输出?
因为uint64
长度为 64 位(8 字节),而您传递的是 80 位(10 字节)。
这比必要的要宽 2 个字节。
然后binary.Read
读取前 8 个字节,它们在两个输入中都是零,并0
在两种情况下都按预期返回。
推荐阅读
- android - 将 FrameLayout 中的片段与另一个片段进行比较
- laravel - fullcalendar 中的日历未显示
- python-3.x - 从 .p (picked) 文件构建 networkx Graph
- django - 从 Openshift 集群外部访问时,来自 Openshift Origin 托管的 Django Web 服务的空回复
- python - Matplotlib 最大刻度显示前几个刻度
- python - Python海龟螺旋练习代码讲解
- angularjs - 混合 Angular 1.x + Angular 6 应用程序,在 Angular 1.x 中包含 vanilla JS 和 TS 文件
- php - PHP IS_DIR 条件不能在循环中继续工作
- javascript - 以角度 6 发送发布请求,无需等待响应
- c# - Datagridview双缓冲性能慢