go - 在 GoLang 中将 int64 的 Slice 转换为字节数组,反之亦然
问题描述
我需要将一片 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 切片,我需要将其转换为字节数组,反之亦然。这可能吗?
解决方案
例如,
package main
import (
"bytes"
"encoding/binary"
"fmt"
"math"
)
func main() {
w64 := []int64{math.MinInt64, -1, 0, 1, math.MaxInt64}
fmt.Println(w64)
// Write []int64 to database []byte
wbuf := new(bytes.Buffer)
err := binary.Write(wbuf, binary.LittleEndian, w64)
if err != nil {
fmt.Println("binary.Write failed:", err)
}
db := wbuf.Bytes()
fmt.Printf("% x\n", db)
// Read database []byte to []int64
rbuf := bytes.NewBuffer(db)
r64 := make([]int64, (len(db)+7)/8)
err = binary.Read(rbuf, binary.LittleEndian, &r64)
if err != nil {
fmt.Println("binary.Read failed:", err)
}
fmt.Println(r64)
}
游乐场: https: //play.golang.org/p/4OscSOGZE52
输出:
[-9223372036854775808 -1 0 1 9223372036854775807]
00 00 00 00 00 00 00 80 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ff ff ff ff ff ff ff 7f
[-9223372036854775808 -1 0 1 9223372036854775807]
推荐阅读
- youtube - 这是一个错误还是 YouTube 删除了访问权限?
- java - JApplet 幻灯片中的公共空白绘制(图形 g)错误
- flutter - 如何在 Flutter 中创建从左到右或从上到下的叠加飞溅动画
- ruby - 如何从 rakefile 执行 linux 命令?
- javascript - Jest - AWS Lambda 测试
- angular - Angular 8 ng-bootstrap 5 表格排序不起作用
- maple - 如何在没有内置函数的情况下枚举 maple 中的排列
- javascript - 如何在 UseEffect 中使用 prop 函数?
- python - 在 Chrome 上运行 Django admin 但在 Microsoft Edge 上运行时出现 404 错误
- typescript - 解决 NestJs 动态模块中的循环依赖