注册 登录
编程论坛 数据结构与算法

压缩法新理念,最低2倍最高N倍压缩率,(算法)

夜话子 发布于 2016-10-10 10:21, 1963 次点击
压缩法
首先建立一个64位的二进制组合表,共4096组并为每组加上编号
二进制表的编号是用16位二进制数表示。如:0001就是(0000、0000、0000、0001)
然后将压缩文件的数据(二进制形式),从第一位开始向后每64位一组,进行分组,直到将压缩文件的数据全部分组。并将每组数据对照二进制组合表,找到每组对应的编号。
如果最后的一组数据不足64位将其取出进行尾数处理。
尾数处理:
将不足64位的数据,记录该数据为多少位,然后将不足的位数补充为0,并找到补充后的数据在建立好的二进制组合表内对应的编号。
如:12(不足64位数据的位数)3140(不足数据补齐后对应的编号)01(第一次处理)
将分好的数据从第一组开始每4组合并为一组,如果最后一组不足64位进行尾数处理。
将合并好的每组数据再次进行对照,找出在组合表内对应的编号。
如:1172 3437 2243 3244 2257 3314 1145 2235 1110
1172343722433244  2257331411452235  (这是编号没有转成二进制形式)
1110(将不足的进行尾数处理)
重复处理,直到得出最后数组不满64位无法转换,记录最后的一组数对应的编号。最终压缩法得出一组数
如:
12(不足64位数组的数位)3140(不足数组补齐后对应的编号)01(第一次转换)、、、、、、(省略号为每次转换时处理尾数得到的数据,如果不需要进行尾数处理则得出00(无尾数)0N(第N次转换))、、、、、、2333(这是最后一组数)

解压法反过来就可以了

1 回复
#2
xzlxzlxzl2016-10-12 09:22
任何压缩算法都不可能将无规律乱码无损压缩到一半大小,赫夫曼压缩算法有时会让压缩后的长度大于压缩前的长度(该算法会有一个编码表,大概和你的思路类似)。
行动大于空想,等你实践出来了再宣布你的伟大成果吧
1