代码改变世界

压缩空格的函数以及BCD码与ASCII相互转换函数

2013-07-24 17:08  夏洛克·福尔摩斯  阅读(638)  评论(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);
}