C语言教程-RLE压缩
21视频教程网收集整理
指的是 RLE (Run-Length Encoding 行程长度编码) 吧,算法我说一下,功课自己做。
一般最流行的是用 7 位来表示长度的,第一个字节最高位标志后面的是压缩的数据还是没压缩的,置位代表后面的一个字节是要重复的部分,因为只用了 7 位,所以最长只有 127 个字节,没置位代表后面的没有压缩,直接输出,长度也是由低 7 为代表。
----大概的伪代码----
while(!eof) {
read_data(ch);
if (count == 127) {
buffer[0] |= 0x7F;
write_buffer_to_file(buffer, 128);
buffer[0] = count = 0;
}
count++;
if (buffer[0] & 0x80) {
if (ch != last_read_char)
buffer[count] = last_read_char = ch;
else {
buffer[0] = 0x80 | count;
write_buffer_to_file(buffer, count+1);
buffer[0] = 0x81;
count = 1;
buffer[1] = last_read_char = ch;
}
} else {
if (ch == last_read_char)
buffer[0] |= ++count;
else {
buffer[0] = count;
write_buffer_to_file(buffer, count+1);
buffer[0] = 0;
count = 1;
buffer[1] = last_read_char = ch;
}
}
}write_buffer_to_file(buffer, count+1);
应该为:
write_buffer_to_file(buffer, 2);
抱歉了~~~以后再也不图快了~~
进入C语言程序设计视频教程专区
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |