如何将String编码或压缩或压缩到另一个长度为原始字符串长度的一半(或小于该值)的字符串?

时间:2014-08-29 09:54:42

标签: string compression encode

我有一个包含字母,数字和特殊字符的字符串,其长度最多可达300个字符。

我想压缩或编码或压缩(我不知道哪个是正确的使用过程),以便最终的字符串应该是原始字符串的一半(也可以是任何小于此值)长度。

因此,这个人类不可理解的字符串可以通过任何机制发送给收件人,他应该能够在他的末尾解码这个字符串以获得原始字符串。

请提供一些关于我应该如何实现这一点的指示。

我对霍夫曼编码有一些了解,但它也需要发送符号表。

我看过base-64(不知道我是否理解正确)但它增加了字符串长度。

欢迎所有评论和指示。

我看过StackOverflow Qs-1

谢谢,

1 个答案:

答案 0 :(得分:0)

确保你可以压缩两倍的唯一方法是扔掉300个字符中的大约一半。

如果你可以限制可能的字符数,那么你可以压缩因子为 log(n)/ log(256),其中 n 就是那个数。例如,如果你可以将它限制为85个字符,即52个字母,10个数字和23个特殊字符(包括空格,新行标记等),那么你可以得到0.8的因子。

您可以尝试各种传统的压缩方法,例如zlib,但是您只能使用300个字符来获取远程。 zlib执行霍夫曼编码以及在历史记录中使用匹配的字符串。通常需要更多的历史记录而不是300个字符才能获得更多收益。如果您有100或1000个这样的300个字符的消息序列,则将它们分组并将它们压缩在一起。然后你可能会看到一些真正的收获。