字符串(二进制)转十进制函数

void test_bin_express()
{
    assert( Bin(“0000”)==0 );
    assert( Bin(“1 0000”)==16 );
}

#include <math.h>
#include <stdlib.h>
#include <string.h>

static int Calc(int val)
{
    if(val<10)
    {
        return val;
    }
    else
    {
        return (Calc(val/10)<<1)+(Calc(val%10));
    }
}

static int IsNum(const char *c)
{
    if( *c<=’9′ && *c>=’0′ )
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

static void Compact(char *dst,const char *src)
{
    int i = 0;
    int valid = 0;
   
    while( i<strlen(src) )
    {
        if( IsNum(src+i) )
        {
            dst[valid++] = src[i++];
        }
        else
        {
            i++;
        }
    }
}
   
int Bin(char *s)
{
    char compact[40] = {0};
    int  val = 0;

    Compact(compact,s);
    val = atoi(compact);
    return Calc(val);   
}

 

    原文作者:进制转换
    原文地址: https://blog.csdn.net/teddy99999/article/details/8653882
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞