【发布时间】:2018-07-12 05:02:13
【问题描述】:
我需要将 int64 切片转换为 golang 中的字节数组。我可以成功地为单个 int64 做到这一点
var p int64 = -3984171602573983744
fmt.Println(p)
cn := make([]byte, 8)
binary.LittleEndian.PutUint64(cn, uint64(p))
fmt.Println(cn)
如何为一片 int64 实现它?
更准确地说,我正在尝试调用库中的一个写入数据库的函数,该函数将字节数组作为参数。我有一个 int64 切片,我需要将其转换为字节数组,反之亦然。这可能吗?
【问题讨论】:
-
您可能必须循环并逐个执行此操作
-
对于每个 int64 循环并将其存储为
binary.LittleEndian.PutUint64(cn[x:], yourUint64),其中 x 变为 0,8,16...当您循环时。您的 cn 应该足够大以获取所有数据(它将是 8 的倍数)。当您想阅读时,请执行相反的操作x1 := binary.LittleEndian.Uint64(cn[n:n+8]),其中n变为 0、1、2..有关更简单的多路解复用示例,请参阅 play.golang.org/p/YVQOAG8-Xlm -
@Ravi 把它写成答案。
-
非常感谢,成功了 :) play.golang.org/p/OdRakHIk1PP