gpt4 book ai didi

go - 在 GoLang 中将 int64 的 Slice 转换为字节数组,反之亦然

转载 作者:IT王子 更新时间:2023-10-29 02:01:44 25 4
gpt4 key购买 nike

我需要将一片 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)
}

Playground :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]

关于go - 在 GoLang 中将 int64 的 Slice 转换为字节数组,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com