Algorithm 文本压缩-使用什么算法

Algorithm 文本压缩-使用什么算法,algorithm,text,compression,Algorithm,Text,Compression,我需要压缩表单的一些文本数据 [70,165,531,0|70,166,562|"hi",167,578|70,171,593|71,179,593|73,188,609|"a",1,3| 数据包含数千个字符1000-50000个左右 我阅读了各种压缩算法,但无法决定在这里使用哪种算法 这里重要的是:压缩字符串应该只包含字母数字字符或一些特殊字符,如+-/&%@$。。我的意思是大多数算法都提供乱七八糟的ascii字符作为压缩数据,对吗?必须避免这种情况 有人能告诉我怎么走吗 另外,文本中主要包

我需要压缩表单的一些文本数据

[70,165,531,0|70,166,562|"hi",167,578|70,171,593|71,179,593|73,188,609|"a",1,3|
数据包含数千个字符1000-50000个左右

我阅读了各种压缩算法,但无法决定在这里使用哪种算法


这里重要的是:压缩字符串应该只包含字母数字字符或一些特殊字符,如+-/&%@$。。我的意思是大多数算法都提供乱七八糟的ascii字符作为压缩数据,对吗?必须避免这种情况

有人能告诉我怎么走吗


另外,文本中主要包含“数字”和|字符。其他角色很少出现。

只有一个想法:你可以独立解决两个问题。使用任何能提供最佳压缩效果的算法,只需在您的数据类型上尝试一些。bz2,zip,rar-无论你喜欢什么,检查大小,然后为了摆脱实际上只有字节的乱七八糟的ascii…,你可以用Base64对压缩数据进行编码


如果你真的花了很多心思,你可能会为你的具体问题找到一个更好的算法,因为你只使用了几个不同的字符,但是如果你偶然发现了一个,我认为值得一试。

只有一个想法:你可以独立解决你的两个问题。使用任何能提供最佳压缩效果的算法,只需在您的数据类型上尝试一些。bz2,zip,rar-无论你喜欢什么,检查大小,然后为了摆脱实际上只有字节的乱七八糟的ascii…,你可以用Base64对压缩数据进行编码


如果你真的花了很多心思,你可能会找到一个更好的算法来解决你的具体问题,因为你只使用了几个不同的字符,但是如果你偶然发现了一个,我认为这是值得一试的。

实际上,你要求将输出字符集限制为可打印字符会自动消耗你25%的压缩增益,在每秒8位中,您最终将使用大约6位

但是,如果这是您真正想要的,您可以始终使用base64或更节省空间的输出将原始ByTestStream重新转换为可打印字符

关于压缩算法本身,请坚持使用一种更知名的算法,如gzip或bzip2,因为这两种算法都有经过良好测试的开源代码

选择最好的算法其实并不是那么容易,下面是你要问自己的一系列问题的摘录:

我需要编码或解码方面的最佳速度吗?例如bzip是非常不对称的 编码器和解码器的内存效率有多重要?对于嵌入式应用程序可能很重要 代码的大小是否重要,对于嵌入式 我想要预先存在的、经过良好测试的代码,用于编码器或解序,或者两者都只使用C语言,还是使用另一种语言 等等
这里的底线可能是,取一个代表性的数据样本,用一些现有的算法运行一些测试,并根据对您的用例非常重要的标准对它们进行基准测试。

实际上,您将输出字符集限制为可打印字符的要求会自动消耗25%的压缩增益,因为在8位/秒的情况下,最终将使用大约6位

但是,如果这是您真正想要的,您可以始终使用base64或更节省空间的输出将原始ByTestStream重新转换为可打印字符

关于压缩算法本身,请坚持使用一种更知名的算法,如gzip或bzip2,因为这两种算法都有经过良好测试的开源代码

选择最好的算法其实并不是那么容易,下面是你要问自己的一系列问题的摘录:

我需要编码或解码方面的最佳速度吗?例如bzip是非常不对称的 编码器和解码器的内存效率有多重要?对于嵌入式应用程序可能很重要 代码的大小是否重要,对于嵌入式 我想要预先存在的、经过良好测试的代码,用于编码器或解序,或者两者都只使用C语言,还是使用另一种语言 等等
这里的底线可能是,取一个有代表性的数据样本,用几个现有的算法运行一些测试,并根据对您的用例很重要的标准对它们进行基准测试。

我实际上想提出一个特定于问题的算法,但最终还是求助于哈夫曼。无论如何谢谢你!实际上,我曾想过提出一种针对特定问题的算法,但最终还是求助于哈夫曼。无论如何谢谢你!谢谢!我使用哈夫曼和base64对结果进行编码。能够压缩到50%左右。现在就可以了。也许我会尝试其他的方法来达到更好的压缩效果@SatheeshJM虽然简单,但Huffman实际上是某些用例的合理选择,在给定的约束条件下50%的压缩是相当好的。我使用了一些特定于问题的替换和转换,当与ascii85编码一起使用时,能够得到大约
t 35%。这就足够了!为了好玩,我还在压缩之前应用了Borrows-Wheeler变换。稍有改进;压缩了34%。无论如何,非常感谢你的帮助!很好的一天!谢谢!我使用哈夫曼和base64对结果进行编码。能够压缩到50%左右。现在就可以了。也许我会尝试其他的方法来达到更好的压缩效果@SatheeshJM虽然简单,但Huffman实际上是某些用例的合理选择,在给定的约束条件下50%的压缩是相当好的。我使用了一些特定于问题的替换和转换,当与ascii85编码一起使用时,能够得到大约35%的压缩。这就足够了!为了好玩,我还在压缩之前应用了Borrows-Wheeler变换。稍有改进;压缩了34%。无论如何,非常感谢你的帮助!很好的一天!大多数算法提供乱七八糟的ascii字符-不,它们提供字节。字节和字符是不同的。大多数算法提供乱七八糟的ascii字符-不,它们提供字节。字节和字符是不同的东西。