文本压缩 - 使用什么算法

Sat*_*hJM 1 compression algorithm text

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

[70,165,531,0|70,166,562|"hi",167,578|70,171,593|71,179,593|73,188,609|"a",1,3|
Run Code Online (Sandbox Code Playgroud)

数据包含几千个字符(约10000 - 50000).

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

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

有人可以指导我如何在这里继续吗?

PS文本包含numbers, 主要'|角色.其他角色非常罕见.

fvu*_*fvu 7

实际上,您将输出字符集限制为可打印字符的要求会自动降低25%的压缩增益,因为每个8位数最终会使用大约6个.

但是,如果这是你真正想要的,你总是可以使用base64或更节省空间的base85来将原始字节流重新转换为可打印字符.

关于压缩算法本身,坚持使用gzip或bzip2等较为知名的算法,因为两个经过充分测试的开源代码都存在.

选择"最好的"算法实际上并不那么容易,这里是你要问自己的问题列表的摘录:

  1. 我需要在编码或解码方面获得最佳速度(例如,bzip是非常不对称的)
  2. 编码器和解码器的存储效率有多重要?对嵌入式应用程序很重要
  3. 是重要的代码的大小,也适用于嵌入式
  4. 我是否需要预先存在经过良好测试的编码器或解码器代码,或仅用C语言或其他语言
  5. 等等

这里的底线可能是,采用您的数据的代表性样本,并使用几个现有算法运行一些测试,并根据对您的用例重要的标准对它们进行基准测试.