| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:向高手请教一个ASCII压缩问题
只看楼主 加入收藏
bkmeteor
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-5-30
收藏
 问题点数:0 回复次数:0 
向高手请教一个ASCII压缩问题

这是用C++编的一个ASCII码压缩算法 本来输入1234567891929394时,应该输出8c 22 b8 ce db dc 5d 但却输出0c a2 b8 ce db 5c dd 0 找了很久了,没有找到出错原因,望高手看看. 小弟谢谢了 #include <iostream.h> #include <math.h> #include <stdio.h> #include <string.h> void YS1(int a[],int i) //满16个字符的处理函数 { int* b=new int[8]; int j,x,y; for(j=0;j<=7;j++) { b[j]=10*a[i+j]+a[i+j+1]; i++; } for(int c=0; c<7; c++) { x=(int)pow(2,c); x=x&b[7]; if(x) y=(int)pow(2,7); else y=0; b[c]+=y; if(b[c]>15) printf("%-4x",b[c]); else printf("0%-3x",b[c]); } }

void YS2(int a[],int i,int n) //剩下的偶数个字符处理 { int* b=new int[n/2]; int j; int c; for(j=0; j<n/2; j++) { b[j]=10*a[i+j]+a[i+j+1]; i++; } for(c=0; c<n/2; c++) { if(b[c]>15) printf("%-4x",b[c]); else printf("0%-3x",b[c]); } } void main() { int flag; int m; int n; int k; int i; char b[50]; //字符最大总长为50 scanf("%s",b); flag=strlen(b)%2; if(flag==0) //偶数个字符时,k=strlen(b) { k=strlen(b); } else { k=strlen(b)+1; //奇数个字符时,k=strlen(b)+1 } int* a=new int[k]; if(flag==1) b[k-1]='0'; cout<<"压缩前的数据为:"<<endl; for (i=0; i<=k-1; i++) { a[i]=b[i]-'0'; //把b[i]转变为整数时用a[i]接收 cout<<a[i]<<" ";

} cout<<'\n'; m=k/16; n=k%16; cout << "压缩后的数据为:"<<endl; for (i=0; i<=m-1; i++) { YS1(a,i*16); } if (n!=0)YS2(a,m*16,n); cout << " "<<flag<<endl; }

[此贴子已经被作者于2005-6-1 7:15:51编辑过]

搜索更多相关主题的帖子: ASCII 压缩 
2005-05-31 13:34
快速回复:向高手请教一个ASCII压缩问题
数据加载中...
 
   



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

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