【问题标题】:How to encode or compress or compact a String to another string of length which is half(or anything less than that) of the original string length?如何将字符串编码或压缩或压缩为另一个长度为原始字符串长度一半(或小于该长度)的字符串?
【发布时间】:2014-08-29 09:54:42
【问题描述】:

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

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

所以这个人类无法理解的字符串可以通过任何机制发送给接收者,他应该能够在他的最后解码它以获得原始字符串。

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

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

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

欢迎所有的 cmets 和指针。

我看过StackOverflow Qs-1,

谢谢,
森

【问题讨论】:

    标签: string compression encode


    【解决方案1】:

    确保您可以压缩两倍的唯一方法是丢弃大约一半的 300 个字符。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多