标题:一个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) { 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]; scanf("%s",b); flag=strlen(b)%2; if(flag==0) { k=strlen(b); } else { 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'; 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; }

搜索更多相关主题的帖子: int ASCII 算法 include 
2005-05-31 13:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-19764-1-1.html




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

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