社区
数据结构与算法
帖子详情
了解rle压缩的请帮帮忙
luxin24
2004-01-22 09:57:51
我想在vc下实现对经rle压缩的文件进行解压,不知该如何操作,尤其是对每一字节高位和低位进行读取不是很清楚,请高手详细指点
...全文
73
8
打赏
收藏
了解rle压缩的请帮帮忙
我想在vc下实现对经rle压缩的文件进行解压,不知该如何操作,尤其是对每一字节高位和低位进行读取不是很清楚,请高手详细指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzwu
2004-01-28
打赏
举报
回复
RLE既是一种编码名称(行程码),又是一种采用了行程码的特定图像文件的格式。
作为一种编码方式,谁都可以采用,这时具体的实现细节可以按自己的需要加以变化和改进。我以前曾用RLE编码方式来实现分子动画的各桢数据的压缩。方法大体和plainsong(短歌)讲的第二种办法类似,但还要复杂点:需要加行号。如果某帧某行数据与前桢完全相同,则后一桢的该行数据就可利用前桢的,所以本行什么也不用记录了!
但是作为微软采用的一种图像文件格式,则实现细节就完全被规定死了,不可以不同了。
短歌如风
2004-01-28
打赏
举报
回复
buffer2和buffer3都是char*类型的,也就是说是指针类型的变量,而<<和>>操作符要求操作数是“整数兼容类型”也就是说是[unsigned](char|short|int|long)类型。怀疑应该是data[i]=((*buffer2)<<4);
此外要注意操作数类型的符号,在取高字节时一定要先转换为无符号类型,否则可能会在右移时导致最高位扩展,也就是发生“算术右移”操作,而我们需要的是“逻辑右移”操作,也就是用零填充移位后的空位。标准中没有规定在对负的带符号数的右移操作的实现细节,但规定无符号数一定是“逻辑右移”。当然也可以在移位后用一个掩码来获得正确的数据,但不如先转型为无符号类型简单。
NowCan
2004-01-24
打赏
举报
回复
把data和buffer2的定义写出来,否则看不出来错在哪儿。
短歌如风
2004-01-22
打赏
举报
回复
rle压缩有很多种实现,不知道楼主说的是哪一种。基本原理就是用一个“长度”-“数据”对来表示多个连续的重复数据。但同时必须能也能够表示无重复的数据段,常用的方法有两种,一种是把无重复的数据段也看成是重复的,重复次数是1,这种方法适用于以连续重复数据为主的数据的压缩;另一种方法是通过某一个标志表明后面的数是N个重复的D还是N个不重复的数据D1、D2、——、DN。好象格式中的RLE就是用的第二种方法,具体记不太清了,由于是在网吧上网,手头没有资料没法查,建议楼主查一下MSDN。
取字节某几位的方法(C语言)
取字节D高N位:
x = (unsigned char)D >> (8 - N);
取字节D低N位:
x = D & ((1 << N) - 1);
取字节D从第I位开始(最低位为第0位)的N位:
x = ((unsigned char)D >> I) &((1 << N) - 1);
注意在右操作前要先转换为无符号数,这样才能保证移位时在高位补0。
luxin24
2004-01-22
打赏
举报
回复
编译通过了,可新问题又来了:
data[i]=((buffer2)<<4);编译不过
这样负值不可以吗?
NowCan
2004-01-22
打赏
举报
回复
char buffer1;
char buffer2;
buffer1 = databuffer[i]>>4; //高4位
buffer2 = databuffer[i]&0xf; //低4位
如果databuffer是char型的,这样就可以了。上面的代码怎么那么复杂?
luxin24
2004-01-22
打赏
举报
回复
我用以下代码实现对数据源databuffer任一字节进行取高四位和低四位,编译报错,能告诉我那里错了吗?
char* buffer1;
char* buffer2;
char* buffer3;
*buffer3 = databuffer[i];
*buffer1 = (unsigned short)buffer3>>4;
*buffer3 = databuffer[i];
*buffer2 = (unsigned short)buffer3&((1<<4)-1);
luxin24
2004-01-22
打赏
举报
回复
第二种形式的rle我不太明白,标志符在数据中是如何体现的呢?
常用
压缩
算法源代码
几种常用的
压缩
算法 本程序包含以下功能: 1、 Arithmetic coding编解码 2、 Huffman coding编解码 3、 LZ77 coding编解码 4、 LZ78 coding 编解码 5、 LZW 编解码 6、
RLE
编解码 7、 DCT ...
RLE
压缩
算法的原理和实现
通过
了解
和应用
RLE
压缩
算法,我们可以提高数据处理和存储的效率,节省存储空间,并在各个领域中应用这一算法的优势。这样,原本连续重复的字符序列就被转换为字符和计数的形式,实现了数据的
压缩
。
RLE
(Run-Length...
深入理解
RLE
压缩
技术及其应用
本简介详细解释了
RLE
的工作原理,包括数据扫描、序列记录、
压缩
结果构建和输出
压缩
数据的步骤。同时指出了算法的优点和局限性,以及在实际应用中与其他
压缩
算法结合的可能性。掌握
RLE
算法对于理解更复杂的
压缩
技术...
RLE
压缩
算法详解
RLE
压缩
算法详解
RLE
(Run Length Encoding)行程长度
压缩
算法(也称游程长度
压缩
算法),是最早出现,也是最简单的无损数据
压缩
算法。
RLE
算法的基本思路是把数据按照线性序列分成两种情况:一种是连续的重复...
RLE
压缩
算法原理与C语言实现
RLE
压缩
算法(下简称
RLE
算法)的基本思路是把数据按照线性序列分成两种情况:一种是连续的重复数据块,另一种是连续的不重复数据块。
RLE
算法的原理就是用一个表示块数的属性加上一个数据块代表原来连续的若干块数据...
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章