2012-06-18 75 views
0
Is there is a way to reduce the length of a string 
using String encoding algorithm. 

不幸的是,“霍夫曼编码”不适合我的情况。我正在寻找一种编码算法,它采用一个字符串并生成比原始字符串(输入)短的字符串字符串编码算法

+0

您可以对由霍夫曼编码产生的数据进行base64编码。不知道它是否更短,但它会产生可打印的字符串。 – nhahtdh

+0

你的字符串是什么?你的意思是压缩? – Manjoor

+0

@Manjoor是的,我需要某种压缩 –

回答

2

没有办法缩短任意字符串,就像没有一般的压缩方法可以在任何情况下一样。所以你需要做的是选择一种适用于你的预期输入并使用它的压缩方法。然后你只需要将结果转换回字符串。

如果你只是想知道如何将结果转换回字符串,还有许多方法。 Base64很容易,而且工作得很好。然而,与纯二进制编码字符串相比,它有25%的开销。

+1

其实,我相信[Base64](http://en.wikipedia.org/wiki/Base64#Padding)有〜33%的开销。 – oldrinb

+0

对不起,你是对的。开销是原始字符串的33%和编码字符串的25%。 – Antimony

0

请参阅“English Text compression test”。在这篇文章中,你会发现几乎所有可能的算法来压缩英文文本。可能有些人可以满足你的要求。

2

希望这可以解答你想要的问题。有一个图书馆,smaz有效压缩英文短字符串。也许幸运的是,它实际上编码的字符串。如果你的字符串不是英文,smaz(一个静态字典)使用的一般方法可以与其他压缩器一起使用。

+0

谢谢您的信息。这个库可能适合我的情况。但是实现在C中。我正在寻找Java和/或c#实现。 –

+0

@KeshanDeSilva这是一个非常小的程序,你应该能够很容易地用手转换它。祝你好运! – U2EF1