0

我记得听说有时计算机会以有趣的方式保存图像。例如,一个图像,其中一些相邻的像素具有相同的确切颜色,然后它们被存储为接下来的 30 个或一些像素都是“红色”的信息,而不是说每个像素都具有我们所知的值红色。

有时您会下载千兆字节大小的大型程序,但以 900 kb 文件开头。我想这些只是将您连接到 ftp 的工具,它通常会为您提供一些数据。

那么,如果我们不需要立即访问信息,比如长期存储,为什么我们不能将千兆字节的信息存储为千字节呢?

举这个例子,程序被要求压缩一个大小为 1024 KB 的文件。用于压缩此信息的程序检测到内存中的字节仅形成 {1,0,0,1,0,0,...} 的模式。该程序创建一个算法,如果被要求解压缩信息并存储该模式应占用的内存长度,它可以在以后识别该算法。原来信息占用的数据现在少了很多。

如果所需的算法太复杂而无法压缩整个文件,也许计算机可以将数据分成不同的算法,以便在要求解压缩时输出更小长度的数据。

这是压缩数据的现实方法吗?我认为这可能已经被使用,因为有时我会看到一个程序,例如 Windows 7,“扩展”数据。这是程序真正在做什么吗?

4

1 回答 1

1

LZW 的工作原理是构建位字符串字典,然后使用对该字典的引用而不是字符串。其他压缩算法以不同的方式工作,但其想法始终是找到更小的表示。一些压缩,例如 jpeg 会丢失数据,这对于我们的眼睛或耳朵能够填充丢失数据的媒体来说很好。其他如 LZW 是“无损”的,它们不会丢失数据。

一些压缩程序如 pkzip 和 winzip 使用基于数据的各种算法。这种方法不能用于流式传输,但适用于文件。

整个地区非常复杂,你可以在上面度过一生,但仍然对它一无所知。祝你在追求中好运。

于 2013-01-08T01:25:36.273 回答