gpt4 book ai didi

c++ - 寻找更好的编码和压缩数字的方法

转载 作者:行者123 更新时间:2023-11-28 03:38:31 25 4
gpt4 key购买 nike

我从一组 13 种数据中抽取了 13 个数字,每种类型有 4 个项目,所以总共有 52 个项目。我们可以将项目编号为 1、2、3、4、5、6、7、8、9、10、11、12、13,因此将有 4 个“1”、4“2”、... 4集合中的“13”。从一组中抽取的 13 个数字是随机的。整个过程重复了百万次甚至更多次,所以我需要一种有效的方法来存储这 13 个数字。我正在考虑使用某种编码方法将 13 个整数压缩成位。例如,我首先计算有多少个“1”、“2”……,用 2 位对每个项目的计数进行编码,然后再使用 1 位来表示该项目是否被绘制。所以对于每个项目,我们需要 3 位,总共 13 个项目花费 39 位。这样做肯定需要 8 个字节。但这仍然太多了,因为我说的是几百万或十亿次计算,而且每组都必须稍后存储到文件中。因此,如果我使用 8 个字节,我的数据仍会询问大约 80GB。但是,如果我可以将其减少一半,我将节省 40GB。知道如何更有效地压缩这个结构吗?我也想用 5 个字节来代替,但我需要处理不同类型的数字(一个 int + 一个 char),是否有任何 c++ 库可以轻松地为我进行编码/压缩?

谢谢。

最佳答案

Google 的 Protocol Buffers 可以存储位数较少的整数,具体取决于它的值。它可能会显着减少您的存储空间。参见 http://code.google.com/p/protobuf/

此处描述了实际的协议(protocol):https://developers.google.com/protocol-buffers/docs/encoding

至于压缩,你看了吗zlib处理您的数据?

关于c++ - 寻找更好的编码和压缩数字的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118668/

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