所以我在考虑.zip存档是如何构建的,然后我想,我怎么能创建自己的存档格式。
答案 0 :(得分:3)
您可能想知道要压缩的内容。例如。 zip非常适合很多东西,但音频文件却不太好用。 FLAC适用于音频,但文本文件效果不佳(假设您可以找到应用它的方法)
一旦你有一个压缩方案,你将分配适当的元数据,以便以后可以解压缩信息,然后压缩数据。
也许你会研究A lossless compression method such as Entropy Encoding。您可能认为算术编码比霍夫曼编码更优,并决定实现算术编解码器。如果您对压缩文本更感兴趣,也可以查看字典编码。
必须包括在编码数据时决定的熵表,以便稍后解码。
以JPEG为例。 JPEG使用颜色空间变换到YCrCb,量化,离散余弦变换,然后对数据使用霍夫曼编码。颜色空间转换元数据包含在标题中。 (每种颜色有多少位,每个通道有多少样本,以及图像的大小。)包括量化表,以及哪个表匹配哪个通道的索引。并使用霍夫曼表来编码DC和AC系数。离散余弦变换和ZigZag系数模式是标准的一部分。因此,在去量化之后,您必须对信息进行IDCT并对系数进行去除。
你必须制定自己的标准,找出恢复信息所需的最少信息,并以可读的方式存储,而不知道内部的细节。
我不知道.zip,但我想它会有几个字典表和几个熵表。您将对数据段进行去熵编码(必须以某种方式通过标准或标记确定),然后使用反向字典替换。
答案 1 :(得分:0)
下载bzip2的来源并进行编译。然后从那里开始。