草庐IT

compression

全部标签

c++ - 用于随机访问压缩数据文件的简单 API

请推荐适合以下任务的技术。我有一个相当大的(500MB)数据block,它基本上是一个数字矩阵。数据熵很低(它应该是可压缩的)并且它所在的存储空间很昂贵。我正在寻找的是用一个好的压缩算法(比如GZip)压缩它,并带有允许非常偶然的随机访问的标记。随机访问,如“从原始(未压缩)流中的位置[64位地址]读取字节”。这与像ZLIB这样的经典deflator库有点不同,它可以让你连续解压缩流。我想要的是,在延迟为每字节读取多达1MB的解压缩工作时进行随机访问。当然,我希望使用现有的库而不是重新发明NIH的轮子。 最佳答案 如果您使用Java

C++解压缩一个gzip字节数组

这是完整的情况:我正在为.tmx文件开发map阅读器,来自平铺。大多数情况下,图block都保存在base64字符串中,其中包含一个由gzip压缩的字节数组。现在我可以读取压缩字节数组,但我不知道如何解压缩它。我阅读了一些关于zlib和boost的文档,但两者都是关于文件流的,而且非常复杂......我是数据压缩领域的新手,所以如果有人知道某种解决方案或一些有用的文档,我将不胜感激。 最佳答案 #include#include#include#include#includeintmain(){usingnamespacestd;if

c++ - Internet Explorer 8 + 压缩

我有一个非常奇怪的问题。我真的希望有人能给出答案,因为我不知道还能问哪里。我正在用C++编写一个由Apache执行并输出HTML代码的cgi应用程序。我正在自己压缩HTML输出-从我的C++应用程序中-因为我的网络主机出于某种原因不支持mod_deflate。我用Firefox2、Firefox3、Opera9、Opera10、GoogleChrome、Safari、IE6、IE7、IE8甚至wget测试了它。它适用于任何,除了IE8。IE8只是说“InternetExplorer无法显示该网页”,没有任何信息。我知道这是因为压缩,只是因为如果我禁用它,它就会起作用。你知道我做错了什么

c++ - 我们如何有效地压缩 DNA 串

DNA字符串可以是任意长度,包含5个字母(A、T、G、C、N)的任意组合。压缩包含5个字母(A、T、G、C、N)的DNA字母串的有效方法是什么?不是考虑每个字母表3位,我们可以使用更少的位数有效地压缩和检索吗?任何人都可以建议一个有效压缩和检索的伪代码吗? 最佳答案 如果您愿意(a)为每个字符设置不同的位大小,并且(b)您总是从头开始阅读,而不是从中间开始阅读,则可以。然后,你可以有这样的代码:A-00T-01G-10C-110N-111从左到右阅读,您只能以一种方式将比特流拆分为字符。您一次读取2位,如果它们是“11”,您需要再读

Java利用Apache compress包实现文件夹压缩成Zip包

Apachecommon提供了很多实用的工具包,下面就说一下如何用compress包来压缩文件夹。先引入compress,io和lang3这3个工具包:org.apache.commonscommons-compress1.9commons-iocommons-io2.4org.apache.commonscommons-lang33.8这个方法实现了将文件夹下所有的文件压缩成zip包,并输出到文件流中,可以直接写入到文件或提供给前端下载,工具类如下:importorg.apache.commons.compress.archivers.ArchiveException;importorg.a

c++ - 免费的基于 C/C++ 的 zip/zip64 库?

在使用poco的zip和minizip错误启动后(两者都有问题,minizip无法解压缩大于2gb的文件,而pocozip会破坏它压缩的大于2gig的任何zip文件)我想知道是否还有其他东西?那么对于可以处理zip和zip64的C++存档库有什么建议吗? 最佳答案 7-zip可以处理这两种情况,据我快速浏览一下它们的源代码可以看出。它也是LGPL,应该允许在闭源应用程序中使用它。 关于c++-免费的基于C/C++的zip/zip64库?,我们在StackOverflow上找到一个类似的问

c++ - zip 文件可以是稀疏的/不连续的吗?

zip文件格式以中央目录部分结尾,然后指向文件中的各个zip条目。这似乎允许zip条目出现在zip文件本身的任何位置。事实上,自解压zip文件就是一个很好的例子:它们以可执行文件开头,所有zip条目都出现在可执行字节之后。问题是:zip文件格式真的允许稀疏或不连续的zip条目吗?zip条目之间是否有空字节或未说明的字节?最终的PK说明和维基百科文章似乎都允许这样做。所有/大多数典型的zip实用程序都可以处理这种稀疏的zip文件吗?用例是这样的:我希望能够删除或替换zip文件中的zip条目。为此,典型的minizip等库希望您复制出整个zip文件,而不复制出已删除或替换的zip条目,这看

c++ - 带有检查点的开源压缩算法

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我正在使用gcc4.5.0和msvc8/9使用C++。我希望能够压缩一个文件(10Gb),然后使用我的应用程序打开该文件。但是,文件内容如此,我不必每次使用它们时都需要其中的所有内容。因此,例如,有一次我打开这些压缩文件之一,并决定我要在不加载文件的情况下搜索文件的95%。使用像gzip这样的压缩算法,这是不可能的:我必须先解压文件的前95%,然后才能解压后5%。So

c++ - 压缩字符串存储

假设我有许多对象包含非平凡长度的字符串(大约3-4kb)。这些字符串彼此不同,但同时包含许多共同的部分/子序列。平均而言,任何单个字符串的80-90%也可能包含在其他字符串中。有没有一种简单的方法可以自动利用这种巨大的冗余来压缩数据?理想情况下,解决方案是C++并且对用户透明(即我可以像访问常规只读conststd::string一样使用它,而不是从压缩存储中读取)。 最佳答案 算法上,Lempel–Ziv–Welch为所有对象/字符串使用一个字典可能是一个好的开始。 关于c++-压缩字

c++ - 矩阵压缩方法

在我一直在处理的应用程序中,我必须通过套接字发送一个256x256矩阵。我正在为在集群上运行的离岸系统模拟器开发可视化客户端,这个矩阵是表示海洋表面当前状态的高度图。这是一个实时应用程序,因此速度是必须的。而且,使用256x256的浮点矩阵,我必须每秒发送256KB的数据,以满足256KB/秒的带宽要求。至少对于我的应用程序来说,这已经很多了。所以,我的问题是,在通过套接字发送矩阵之前,是否有一些好的方法来压缩它?而且,如果有这样的方法,我可以期望减少多少操作系统?由于我的矩阵代表一个连续的表面,有损压缩方法对我来说不是问题。我最关心的是压缩率、压缩发生所花费的时间,最后,如果已经有针