算法编码解码176位到80位



我想要一个简单的算法通过编码将176位压缩到80位,然后再从80位解码到176位?

由于鸽子洞原理,这是不可能的。
176位可以表示9.5*10^52个不同的值,而80位只能表示1.2*10^24个不同的值。你不能将每个176位的值映射到一个80位的值。

如果这是可能的,你可以把无限数量的数据放入80位通过重复压缩。

话虽这么说,如果你对176位值有所了解,那么可能有办法做到这一点。假设你知道较大的值只有22个文字数字:例如像"11223344556677889900"或"111111111111111111111111111111"这样的字符串。在这种情况下,可能的输入集将大大减少-并且您可以将这些值中的每个值映射为80位值。

那是不可能的。

一个176位的数字有2^176种不同的组合。不可能将这些组合中的每一个都表示为不同的80位数字,它只有2^80种组合。这就像要求把一个4位数压缩成一个3位数,然后再压缩回来。

根据您处理的数据类型,这可能会导致丢失。能解释一下你在做什么吗?

如果你想自己实现它,这里是一个相当简单的算法的描述:

http://en.wikipedia.org/wiki/LZ77_and_LZ78

如果你谷歌更多,有一个页面有一个非常详细的解释如何在实践中工作,我只是现在找不到它。

或者,只使用压缩库,例如zlib (http://en.wikipedia.org/wiki/Zlib)。

最新更新