标签: data-compression

如何从zip文件中读取数据而不必解压缩整个文件

无论如何在.Net(C#)中从zip文件中提取数据而不解压缩整个文件?

简单地说,我可能想从zip文件的开头提取数据(文件),显然这取决于压缩算法是否以确定的顺序压缩文件.

c# compression zip data-compression

92
推荐指数
4
解决办法
12万
查看次数

什么是熵的计算机科学定义?

我最近在我的大学开设了数据压缩课程.但是,我发现使用术语"熵",因为它适用于计算机科学而不是模棱两可.据我所知,它大致转化为系统或结构的"随机性".

计算机科学"熵"的正确定义是什么?

computer-science entropy data-compression information-theory

63
推荐指数
7
解决办法
5万
查看次数

如何计算位串的近似熵?

有没有标准的方法来做到这一点?

谷歌搜索 - "近似熵"位 - 揭示多篇学术论文,但我想找到一个伪代码块来定义任意长度的给定位串的近似熵.

(如果这说起来容易做起,而且取决于应用程序,我的应用程序涉及16,320位加密数据(密文).但加密为难题而不是无法破解.我以为我先检查一下熵,但不能轻易找到这样的好定义.所以这似乎是一个应该在StackOverflow上的问题!关于从哪里开始去除16k随机看似位的想法也是受欢迎的......)

另请参阅此相关问题:
熵的计算机科学定义是什么?

encryption entropy data-compression information-theory

42
推荐指数
6
解决办法
3万
查看次数

编写一个程序,将文本作为输入,并生成一个再现该文本的程序

最近我遇到了一个很好的问题,它很容易理解,很难找到任何解决方法.问题是:

编写一个程序,从输入中读取文本并在输出上打印一些其他程序.如果我们编译并运行打印的程序,它必须输出原始文本.

输入文本应该相当大(超过10000个字符).

唯一(也是非常强大)的要求是存档的大小(即打印的程序)必须严格小于原始文本的大小.这使得不可能出现明显的解决方

std::string s;
/* read the text into s */
std::cout << "#include<iostream> int main () { std::cout<<\"" << s << "\"; }";
Run Code Online (Sandbox Code Playgroud)

我相信这里会使用一些归档技术.

c++ compression algorithm lossless-compression data-compression

35
推荐指数
3
解决办法
2781
查看次数

压缩的理论限制是什么?

想象一下,在接下来的10年里,您拥有世界上所有的超级计算机.你的任务是尽可能无损地压缩10部完整的电影.另一个标准是普通计算机应该能够动态解压缩,并且不需要花费太多的HD来安装解压缩软件.

我的问题是,你能比现在最好的替代方案实现多少压缩?1%,5%,50%?更具体地说:给定一个固定的字典大小(如果它也被称为视频压缩),是否存在压缩的理论限制?

compression data-compression information-theory

15
推荐指数
4
解决办法
1万
查看次数

有没有实用的方法来压缩NSData?

我没有看到关于该主题的任何文档,但这并不意味着它不存在.

data-compression nsdata ios

13
推荐指数
3
解决办法
2万
查看次数

使用python进行大文件压缩

我想用python压缩大文本文件(我说的是> 20Gb文件).我不是一个专家如何,所以我试图收集我发现的信息,以下似乎工作:

import bz2

with open('bigInputfile.txt', 'rb') as input:
    with bz2.BZ2File('bigInputfile.txt.bz2', 'wb', compresslevel = 9) as output:
        while True:
            block = input.read(900000)
                if not block:
                    break
                output.write(block)

input.close()
output.close()
Run Code Online (Sandbox Code Playgroud)

我想知道这种语法是否正确,是否有办法优化它?我的印象是我在这里遗漏了一些东西.

非常感谢.

python data-compression

12
推荐指数
1
解决办法
7345
查看次数

如何检查TOAST是否正在postgres中的特定表上工作

我有一个包含两个文本字段的表,其中包含大量文本.出于某种原因,我们的桌子开始成倍增长.我怀疑TOAST(postgres中的文本字段压缩)不能自动运行.在我们的表定义中,我们没有定义任何强制压缩这些字段的子句.有没有办法检查压缩是否在该表上工作?

sql postgresql data-compression

12
推荐指数
1
解决办法
1万
查看次数

具有随机数据访问的压缩矢量/数组类

我想制作"压缩数组"/"压缩矢量"类(详见下文),它允许随机数据访问具有或多或少的恒定时间.

"或多或少的恒定时间"意味着虽然元素访问时间不是恒定的,但是当我接近数组的某个点时它不应该继续增加.即容器不应该做更多的计算(比如"再次解压缩所有内容以获取最后一个元素",并且"几乎不做任何事情来获得第一个")来获得一个元素.可以通过将数组拆分为压缩数据块来实现.即访问一个元素应该采用"averageTime"+ - 一些偏差.我可以说我希望最佳访问时间和最坏情况访问时间相对接近平均访问时间.

我有哪些选择(合适的算法/已有的容器 - 如果有的话)?

货柜详情:

  1. 容器充当相同元素的线性数组(例如std :: vector)
  2. 初始化容器后,数据将保持不变并且永远不会更改.容器需要提供只读访问权限.
  3. 容器应该像array/std :: vector一样 - 即通过operator []访问的值,有.size()等.
  4. 如果我可以将它作为模板类,那将是很好的.
  5. 对数据的访问应该或多或少地保持恒定时间.我不需要每个元素的相同访问时间,但我不应该解压缩所有内容以获取最后一个元素.

用法示例:
对数据进行二进制搜索.

数据详情:
1.数据结构主要由浮点数和几个整数组成.浮点数多于整数.没有字符串.
2.阵列中不太可能存在许多相同的元素,因此无法简单地索引数据.
3.一个元素的大小小于100个字节.
4.每个容器的总数据大小介于几千字节和几兆字节之间.
5.数据不稀疏 - 它是连续的元素块,所有元素都被分配,没有"空槽".

压缩的目标是减少与未压缩表示形式相比较的块所占用的ram量,同时保持一定程度上合理的读取访问性能,并允许随机访问元素作为数组.即数据应该在内部以压缩形式存储,我应该能够访问它(只读),就像它是std :: vector或类似的容器一样.

想法/意见?

c++ compression algorithm data-compression

10
推荐指数
1
解决办法
3078
查看次数

仅限数字的压缩算法

我要压缩位置数据(纬度,经度,日期,时间).所有数字都是固定格式.其中2个(纬度,经度)采用十进制格式.其他2是整数.

现在这些数字是固定格式的字符串.

压缩固定格式数字的算法是什么?数字压缩(如果有的话)比字符串压缩更好吗?我应该直接压缩字符串而不将其转换为数字然后压缩吗?

提前致谢.

compression data-compression

8
推荐指数
2
解决办法
9424
查看次数