我需要压缩表单
的一些文本数据[70,165,531,0|70,166,562|"hi",167,578|70,171,593|71,179,593|73,188,609|"a",1,3|
数据包含几千个字符(约10000 - 50000)。
我阅读了各种压缩算法,但无法决定在这里使用哪种算法。
重要的是:压缩字符串应仅包含字母数字字符(或一些特殊字符,如+ - /&%@ $ ..)我的意思是大多数算法都提供乱码ascii字符作为压缩数据吧?必须避免这种情况。
有人可以指导我如何前往这里吗?
P.S该文本主要包含numbers
,'
和|
字符。其他角色非常罕见。
答案 0 :(得分:7)
实际上,您将输出字符集限制为可打印字符的要求会自动降低25%的压缩增益,因为每8位数最终会使用大约6位。
但是,如果这是你真正想要的,你可以始终使用base64或更节省空间base85的输出来将原始字节流重新转换为可打印字符。
关于压缩算法本身,坚持使用gzip或bzip2这样的较为知名的算法,因为两个经过充分测试的开源代码都存在。
选择“最好的”算法实际上并不那么容易,这里是你要问自己的问题列表的摘录:
这里的底线可能是,采用有代表性的数据样本,并使用一些现有算法运行一些测试,并根据对您的用例重要的标准对它们进行基准测试。
答案 1 :(得分:4)
只有一个想法:你可以独立解决你的两个问题。使用任何算法给你最好的压缩(只需尝试一些你的数据.bz2,zip,rar - 你喜欢什么,并检查大小),然后摆脱“乱码ascii”(那是实际上只有字节......),您可以使用Base64对压缩数据进行编码。
如果你真的考虑过它,你可能会找到一个更好的算法来解决你的具体问题,因为你只使用了几个不同的字符,但如果你偶然发现一个字符,我认为值得一试。