我有很多像下面这样的多维数组。当然,它们充满了特定的值。
uint8_t data[32][64][32];
如何在内存中压缩这些数组,然后将它们作为*.zip
存档存储到硬盘驱动器?
我有很多像下面这样的多维数组。当然,它们充满了特定的值。
uint8_t data[32][64][32];
如何在内存中压缩这些数组,然后将它们作为*.zip
存档存储到硬盘驱动器?
libzip是一个 ZIP 压缩和解压缩库,它允许对内存缓冲区和文件进行操作。
看看libarchive(BSD 许可证)。它非常强大,您可以严格控制数据:您可以将不同的内存块组合为压缩文件(例如 .tar.gz)中的“文件”。里面有几个不错的教程。
您应该告诉我们更多关于您的问题的信息,以便获得具体的答案。您是否需要将这些文件移动到另一台机器上?数组的维度总是相同的吗?
在最简单的情况下,您只想存储数据 - 始终使用相同的格式 - 并且只在您的机器上使用相同的代码使用它,您所需要的只是一个压缩库。我以前用过http://www.quicklz.com/,它很容易集成。在这种情况下,它是一个多维数组这一事实并不重要,数据的类型也不重要。只需将指向第一个元素的指针和长度传递给压缩器,然后将结果保存到文件中(如果您愿意,可以将其命名为 .zip)。然后,当您想重新加载它时,读取文件,将其交给解压缩器并将结果转换为具有相同维度的数组。
对于更有可能的情况,您有不同类型的数组,并希望它们在其他设备(和其他软件)上可读,我建议您使用类似http://www.hdfgroup.org/HDF5/的东西,这将允许您以结构化方式存储数据,包括数据类型(具有字节序等)。