gpt4 book ai didi

Go:高效地将十六进制值存储在内存中

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:32 26 4
gpt4 key购买 nike

我有两个相互关联的 16 字节十六进制值,我想将它们保存在 Go 的内存中(因此它们只需要在运行进程的生命周期内存在),可以表示为一个简单的映射,如下所示:

{"aabbcc": "112233"}

显然我可以将它们表示为两个字符串的结构,但我只是想知道是否有更快(即性能)或内存效率更高的方式来存储 Go 中的字符串?到目前为止,我只是简单地研究了 Go,所以对标准库的了解还不够深,无法找到一个好的答案。

编辑:了解我的意思(伪代码):

我有两个来自不同来源的 UUID,它们是作为字符串生成/接收的:

uuid_a_1 = "aabb-1122-3344"
uuid_a_2 = "ddee-5566-7788"

我想存储它们之间的关系:

uuid_map[] = {uuid_a_1: uuid_a_2}

这样我可以在查找另一个时返回一个:

return uuid_map[uuid_a_1]

我只是好奇是否有一种比简单的字符串映射更有效的方法将它们存储在内存中,例如我可能想在进程的生命周期内存储几千个,并且希望能够键入/value 尽快存储这些(我的想法是因为我知道我可以快速完成的键和值的确切大小和类型)。

最佳答案

正如 FUZxxl 所建议的那样,您可以将字符串编码为字节数组。

http://play.golang.org/p/7MYWTWSu2-

package main

import (
"encoding/hex"
"fmt"
"strings"
)

func main() {
b, err := hex.DecodeString(strings.Replace("df31a780-f640-11e3-a3ac-0800200c9a66", "-", "", -1))
if err != nil {
fmt.Println(err)
}
fmt.Println("Decoded:", b)
fmt.Println("Encoded:", hex.EncodeToString(b))
}

关于Go:高效地将十六进制值存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265212/

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