题目
数据压缩
RLE(Run-Length Encoding,行程长度编码)是一种编码方式,也是一种简单的无损压缩法,压缩和解压缩效率高。
RLE压缩法:利用控制字节的最高位来标识是否进行了压缩。当最高位为1时,则后面7位表示的是数据的重复次数;当最高位为0时,则后面7个位的数是被压缩的数据。
例如,如果有15个十六进制数都是30,那么,压缩后的编码为8F30。
识别说明:十六进制数8F转换为二进制是1000111,最高位是1,后面的7位0001111表示的是字节的重复次数15;十六进制数30转换为二进制是00110000,最高位是0,30是被重复的数据。采取这种方法,一个字符只有重复两次以上,才能被压缩。即使一个数据只重复3次,也可以获得30%的压缩比。
(1)
如果经过RLE压缩方法压缩后的数据为8A6F,那么解压缩前的数据是什么?
(2)
根据RLE压缩方法,下列字符数据经过压缩后的数据是什么?
20,30,30,30,35,35,……,35,64。其中,十六进制数30共有3个,35共有60个。
答案: 8A二进制是1000 1010 所以重复10次,重复内容是十六进制的6F。 那么压缩前的数据是:6F, 6F, 6F, 6F, 6F, 6F, 6F, 6F, 6F, 6F。
重复3次二进制是0000 0011,最高位置1以后就是1000 0011即83,重复内容是十六进制30,所以压缩后的数据为83 30。 重复60次二进制是0011 1100,最高位置1以后就是1011 1100即BC,重复内容是十六进制35 ,所以压缩后的数据为BC 35。 那么最后压缩数据为:20, 83 30, BC 35,64。