| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:pcx的压缩算法请教
取消只看楼主 加入收藏
kof888
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2009-4-1
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:1 
pcx的压缩算法请教
会解压,不会压缩了,求方法
程序代码:

//小于c1的直接输出,大于的就减去c1,得到的就是复制的字节数,后面跟着的是回退量
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
 FILE *fa,*fb;
 if((fa=fopen("1.GRC","rb"))==NULL)
 {printf("cannot open file A\n");exit(0);}
 if((fb=fopen("0.bin","wb+"))==NULL)
 {printf("cannot open file C\n");exit(0);}

 unsigned char j[65];
 unsigned char ah,bh;
 while (!feof(fa))
{
   ah=fgetc(fa);
   bh=fgetc(fa);


/********ah小于c1,bh小于c1******/
  if (ah<0xc1 && bh<0xc1)
  {if (!feof(fa))
   {fputc(ah,fb);
    fputc(bh,fb);}
  }


/***********ah小于c1,bh等于c1************/
  else if (ah<0xc1 && bh==0xc1)
  {if (!feof(fa))
   {   fputc(ah,fb);
       ah=fgetc(fa);
       fputc(ah,fb);}
  }

 /**************ah小于c1,bh大于c1***********/
  else if (ah<0xc1 && bh>0xc1)
  {
   if (!feof(fa))
   {   fputc(ah,fb);
       ah=fgetc(fa);
       fseek(fb,-ah,1);
       fread(&j,1,bh-0xC0,fb);
       fseek(fb,0,2);
       fwrite(&j,1,bh-0xC0,fb);
   }
  }


/************ah等于c1**************/
  else if (ah==0xc1)
  {if (!feof(fa))
  {fputc(bh,fb);}}


/******************ah大于c1*******************/
  else if (ah>0xc1)
  {
   if (!feof(fa))
   {   fseek(fb,-bh,1);
       fread(&j,1,ah-0xC0,fb);
       fseek(fb,0,2);
       fwrite(&j,1,ah-0xC0,fb);
   }
  }
 }
 fclose(fa);
 fclose(fb);
}
压缩的没概念,希望大大指点一下,谢谢

[ 本帖最后由 kof888 于 2009-9-4 10:53 编辑 ]
搜索更多相关主题的帖子: 压缩 算法 pcx 
2009-09-04 10:52
kof888
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2009-4-1
收藏
得分:0 
额,我只想到过用伪压缩的方式放进去,不过文件会比较大
2009-09-12 12:35
快速回复:pcx的压缩算法请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023728 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved