我有一个包含以下类型序列的文件
8596667067212397077404349431816440311306093411908572330624765346447368390322045806914916831283109072368030292593762209252123791942061171616472217102902772202750582672911834098208970365852595911415723265762439878861571164890323784684895745798887472231090706141213174054010 .........
所有只有0-9 字符
请建议我最好的压缩方法
答案 0 :(得分:1)
使用base-10编码,您可以在64位整数中存储19位数字。这使得压缩大小为ASCII序列大小的42.1%。
编码更快,特别是解码(需要划分基数10)将是数字上的霍夫曼码,假设概率相等。对于六个数字,这将是三位,对于四个数字,这将是四位。这是每位数平均3.4位,压缩大小为42.5%。
在等概率数字上使用多精度算术(非常慢)进行基本编码时,理论上最好的是41.5%。
答案 1 :(得分:0)
您的问题并不完全清楚您是仅需要压缩方法还是标准压缩文件格式。
您可以将它们存储为二进制编码的十进制数,每个数字需要4位。相对于ASCII或UTF-8,这是一个精确的50%压缩率。
我只是尝试用gzip压缩你的例子,它缩小到原始大小的60% - 使用更大的序列,这将更有效。