簡體   English   中英

如何將內存數組壓縮為* .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/的格式,以包括數據類型(帶有字節序等)的結構化方式存儲數據。

看一下libarchive (BSD許可證)。 它非常強大,您可以嚴格控制數據:您可以將不同的內存塊組合為壓縮文件(例如.tar.gz)內的“文件”。 里面有一些不錯的教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM