1. 程式人生 > >串列埠字元轉十六進位制

串列埠字元轉十六進位制

int strHex2int(char *inBuf,unsigned char *sendBuf,int len)
{
    int index=0;
    int resdex=0;

    memset(sendBuf,0,sizeof(unsigned char)*15);
    
    if(inBuf==NULL||sendBuf==NULL)
        return -1;

    system_log("###### len %d",len);
    for(index=0;index<len;index++)
    {
        system_log("##### index:%d",index);
        if(inBuf[index]>='0'&&inBuf[index]<='9')
            sendBuf[resdex]=inBuf[index]-'0';
        else if(inBuf[index]>='a'&&inBuf[index]<='f')
            sendBuf[resdex]=inBuf[index]-'a'+10;
        else if(inBuf[index]>='A'&&inBuf[index]<='F')
            sendBuf[resdex]=inBuf[index]-'A'+10;
        else if(inBuf[index]==' ')
            continue;
        else
            return -1;
        index++;
        
        if(inBuf[index]>='0'&&inBuf[index]<='9')
            sendBuf[resdex]=inBuf[index]-'0'+sendBuf[resdex]*16;
        else if(inBuf[index]>='a'&&inBuf[index]<='f')
            sendBuf[resdex]=inBuf[index]-'a'+10+sendBuf[resdex]*16;
        else if(inBuf[index]>='A'&&inBuf[index]<='F')
            sendBuf[resdex]=inBuf[index]-'A'+10+sendBuf[resdex]*16;
        else if(inBuf[index]==' ')
            continue;
        else
            return -1;
        system_log("######sendBuf[%d]: 0x%02x",resdex,sendBuf[resdex]);
        if(resdex>=15)
            return -1;
        resdex++;
    }
    
    return resdex;
}