在 C 中将二进制数转换为小数

#include
#include
#include<数学.h>

unsigned long int puiss(unsigned long int x, int n)
{
 if(n == 0)
  返回 1;
 if(n == 1)
  返回 x;
 无符号长整月 x2 = 幂(x,n/2);
 if(n%2 == 0)
  返回 x2*x2;
 返回 x2 * x2 * x;
}
int char_to_int(char d)
{
 字符链[2];
 str[0] = d;
 str[1] = '\0';
 返回 (int) strtol(str, NULL, 10);
}

unsigned int convertirEnBase10(int binary)
{
     字符 snum[20];
     // 转换为 String
     ITOA(二进制,snum,10);
     // 有多少个字符?
     int nc = log10((int)二进制)+1;
     int decimal = 0;
     for(int i = nc-1  ; i >= 0; i--)
     {
      十进制 += char_to_int(snum[i]) * puiss( 2, (nc-1)-i);
     }
     返回十进制;
}
     
int main()
{
   二进制整数;
   while(true)
   {
     printf(输入二进制数”);
     scanf(%d”,&二进制);
     printf (%ld 在 base 2 = %ld 在 base 10\n”二进制,convertInBase10(二进制);
   }
   返回 0;
}