RLE算法是最简单的压缩算法,作为学生党做作业不可避免的要去网上找RLE算法的代码,然而网上所有RLE压缩算法的代码都不好使,笔者在网上代码的基础上略加修改,使之粘贴即可使用。
源码来自:http://blog.csdn.net/calcular/article/details/46804919
算法思想来自:http://blog.csdn.net/orbit/article/details/7062218
感谢原作者。
原代码的问题在于,当一个字符超过127次重复之后,编码会出现错误。原作者可能并没有用足够的样本去测试,导致这个bug的出现。
废话不多说,先上代码。
bool IsRepeat3(unsigned char *in, int rest)
{
if (rest<2) return false;
else {
if (*in == *(in + 1) && *in == *(in + 2)) return true;
else return false;
}
}
int GetNoRepeat3(unsigned char *in, int rest)
{
if (rest <= 2)
return rest + 1;
else {

本文介绍了一种改进的RLE(游程编码)压缩算法,解决了原算法在字符重复超过127次时的错误问题。通过设置长度字节的最高位为标志位,区分连续重复和不重复字符序列,降低了冗余。文章提供可直接使用的C语言源码,并通过例子解释了编码过程。
压缩算法(粘贴就能用)&spm=1001.2101.3001.5002&articleId=78829301&d=1&t=3&u=7885d4571ae049cbb3436938ed7b66a5)
2万+

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



