如何将内存中的数组压缩为*.zip归档文件
How to compress an in memory array to a *.zip archive?
我有许多像下面这样的多维数组。它们当然是用特定的值填充的。
uint8_t data[32][64][32];
如何在内存中压缩这样的数组,然后将它们作为*.zip
归档存储到硬盘上?
libzip是一个ZIP压缩和解压缩库,它允许对内存缓冲区和文件进行操作。
你应该告诉我们更多关于你的问题,以便得到一个具体的答案。您需要将这些文件移到另一台机器上吗?数组的维数总是相同的吗?
在最简单的情况下,您只想以相同的格式存储数据,并且只在您的机器上以相同的代码使用它,您所需要的只是一个压缩库。我以前用过http://www.quicklz.com/,它很容易集成。在本例中,它是一个多维数组这一事实无关紧要,数据的类型也无关紧要。只需将指向第一个元素的指针和长度交给压缩器,并将结果保存到一个文件中(如果愿意,可以将其命名为.zip)。然后,当您想重新加载它时,读取文件,将其交给解压缩器,并将结果强制转换为具有相同维数的数组。
对于更有可能的情况下,你有不同类型的数组,并希望他们是可读的其他设备(和其他软件),我建议你使用类似http://www.hdfgroup.org/HDF5/的东西,这将允许你以结构化的方式存储数据,包括数据类型(与endianness等)。
看一下libchive (BSD许可证)。它非常强大,您可以严格控制您的数据:您可以将不同的内存块组合为压缩文件(例如.tar.gz)中的"文件"。里面有一些很好的教程
相关文章:
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 如何使用 Poco::ZIP 压缩/解压缩 zip 文件
- C++.SevenZip压缩为zip格式.ClassFactory无法提供请求的类
- 使用迷你zip解压缩字符数组
- 如何在视觉工作室中使用C++解压缩压缩文件 (.zip)
- 如何使用 zlib.h 库将.zip文件解压缩到文件夹中
- 从本地代码访问apk中的压缩文件(从zip中读取zip)
- 压缩算法(例如gzip、zip或snappy)的输出肯定小于输入吗
- 如何检查 zip 文件或压缩文件是否存在
- 使用 zlib 解压缩.zip文件的简单方法
- 从C++解压缩 ZIP 的最简单方法
- 寻找可以解压缩rar,7z,bz2,zip等的c ++压缩库
- 有没有关于如何将包含文件夹和文件的zip文件解压缩到某个目录并通过MiniZip将其打包的教程
- 使用zlib/minizip:C/C++应用程序解压缩zip文件
- 如何将内存中的数组压缩为*.zip归档文件
- 免费的c++开源压缩库,支持zip和zip64
- 读取文件在zip不解压缩(c++)
- (C++)解压缩 0 字节的文件时ZR_FLATE错误。解压缩源:"Zip Utils -clean, elegant...."
- 正在创建ZIP存档压缩级别(libzip)
- Zlib解压缩.zip文件