RLE压缩算法(下简称RLE算法)的基本思路是把数据按照线性序列分成两种情况:一种是连续的重复数据块,另一种是连续的不重复数据块。
RLE算法的原理就是用一个表示块数的属性加上一个数据块代表原来连续的若干块数据,从而达到节省存储空间的目的。一般RLE算法都选择数据块的长度为 1 字节,表示块数的长度也用1字节表示,对于颜色数小于 256 色的图像文件或文本文件,块长度选择 1 字节是比较合适的。可以参照这里。
RLE全称(run-length encoding),翻译为游程编码,又译行程长度编码,又称变动长度编码法(run coding),在控制论中对于二值图像而言是一种编码方法,对连续的黑、白像素数(游程)以不同的码字进行编码。游程编码是一种简单的非破坏性资料压缩法,其好处是加压缩和解压缩都非常快。其方法是计算连续出现的资料长度压缩。

如图为RLE算法描述
RLE在用于二进制多重复的情况下比较好, 特点是可以做到无损压缩, 但是用于字符多且重复性差的情况下可能做到事倍功半, 比如 ABCDEFG经压缩后将成为1A1B1C1D1E1F1G, 字符串整整扩大了一倍.
为了模拟出有重复性的数据, 我以如下方式进行数据生成:
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("file.txt","w",stdout); //输出重定向,输出到文件
srand(time(0)); //以当前时间作为种子
char x;
for(int i = 0; i <= 1

4482

被折叠的 条评论
为什么被折叠?



