C/C++的压缩库能够处理数组中超过32位的元素

Compression library for C / C++ able to deal with more than 32 bit elements in the array

本文关键字:中超 数组 处理 32位 元素 C++ 压缩      更新时间:2023-10-16

我有一个问题,我需要压缩大约6 GB的std::vector()(其中有15亿个float s),到目前为止我已经使用了lz4,但它只处理char s的int计数。由于我的向量中有60亿个字符,这需要33位来表示,而使用lz4的压缩无法按我的需要工作。

从我在zlib库中看到的情况来看,它需要int以及到压缩数据长度的输入。

我是否需要对数据进行分段,或者是否有一个能够处理超过32位char的框架,或者我是否缺少了什么?

使用zlib,并将数组作为几个块传入。zlib使用的DEFLATE算法的窗口大小约为32KB,并且它已经缓冲了压缩的数据,因此将数据作为多个块传入不会影响压缩效率。

看看XZ,它似乎可以处理非常大的尺寸。CLI可执行文件本身就是库的精简包装器,因此这应该符合您的要求。

OTOH,二进制浮点流不应该压缩得那么好。。。