压缩空格的函数以及BCD码与ASCII相互转换函数
2013-07-24 17:08 夏洛克·福尔摩斯 阅读(571) 评论(0) 编辑 收藏 举报/**
函数名:zip_space
功能 :压缩空格的函数
参数 :
s 源字符串
返回值:
0 成功
**/
int zip_space(char *s){ int i,j; int len; if(s==NULL || strlen(s)==0) { return -1; } len=strlen(s); i=j=0; while(s[i]!=\'\0\'){ if(s[i]!=\' \'){ if(i!=j){ s[j]=s[i]; } i++;j++; }else{ i++; } } while(j<i){ s[j]=\'\0\'; j++; } return(0); } /************* ****************/ int zip_0a09(char *s, int begin) { int len=strlen(s); int i,j; i=j=begin; while(s[i]!=\'\0\'){ if(s[i]!=0x09 && s[i]!=0x0a){ if(i!=j){ s[j]=s[i]; } i++;j++; }else{ i++; } } if(j<i){ s[j]=\'\0\'; } return(j); } /****asc->bcd***/ int iAscToBcd(char *pcASC,char *pcBCD,int iLength){ int i; for(i=0;i<iLength/2;i++){ unsigned char ch1,ch2; ch1=(unsigned char)pcASC[i*2]; ch2=(unsigned char)pcASC[i*2+1]; if(ch1>=\'a\' && ch1<=\'f\') ch1=ch1-\'a\'+0xa; else if(ch1>=\'A\' && ch1<=\'F\') ch1=ch1-\'A\'+0xa; else ch1=ch1-\'0\'; if(ch2>=\'a\' && ch2<=\'f\') ch2=ch2-\'a\'+0xa; else if(ch2>=\'A\' && ch2<=\'F\') ch2=ch2-\'A\'+0xa; else ch2=ch2-\'0\'; pcBCD[i]=(ch1<<4)|ch2; } return(0); } /****bcd->asc***/ int iBcdToAsc(char *pcBCD,char *pcASC,int iLength){ int i; for(i=0;i<iLength;i++){ unsigned char ch; ch=(unsigned char)pcBCD[i]; ch=ch>>4; if(ch>=10){ pcASC[2*i]=ch-10+\'A\'; }else{ pcASC[2*i]=ch+\'0\'; } ch=(unsigned char)pcBCD[i]; ch=ch &0x0f; if(ch>=10){ pcASC[2*i+1]=ch-10+\'A\'; }else{ pcASC[2*i+1]=ch+\'0\'; } } return(0); }