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

String 如何将一个字符串编码、压缩或压缩为另一个长度为原始字符串长度一半(或小于该长度的任何值)的字符串?,string,compression,encode,String,Compression,Encode,我有一个包含字母、数字和特殊字符的字符串,长度大约可以达到300个字符 我希望压缩、编码或压缩(我不知道使用哪个过程是正确的),这样最终的字符串应该是原始字符串长度的一半(也可以是小于该长度的任何值) 因此,这个人类无法理解的字符串可以通过任何机制发送给接收者,接收者应该能够在自己的终端对其进行解码,以获得原始字符串 请提供一些我应该如何实现这一点的指针 我对哈夫曼编码有一些了解,但它也需要发送符号表 我看过base-64(不知道我是否理解正确),但它增加了字符串长度 欢迎所有评论和指点 我看了

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

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

因此,这个人类无法理解的字符串可以通过任何机制发送给接收者,接收者应该能够在自己的终端对其进行解码,以获得原始字符串

请提供一些我应该如何实现这一点的指针

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

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

欢迎所有评论和指点

我看了,

谢谢,

Sen

确保压缩系数为2的唯一方法是丢弃300个字符中的大约一半

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

您可以尝试各种传统的压缩方法,例如,但如果仅使用300个字符,则不会有多大进展。zlib进行哈夫曼编码,并在历史记录中使用匹配字符串。通常,在这些方法能够给您带来更多收益之前,需要超过300个字符的历史记录。如果您有一个100或1000个这样的300字符的消息序列,那么将它们分组并压缩在一起。然后你可能会看到一些真正的收获