Bin to Decimal(codewars)

Bin to Decimal

2019.5.15
这是本菜鸟第一次尝试写博客//近期都仅仅只会展示一个很简单的(8kyu)的cadewars题

codewars网站地址
这是当初java老师让我们每天去练习一道题,我只做了一阵子就没做了,尴尬
现在感觉自己代码实践真的少的可怜,特此决定每天写一个(因为没时间。。。。)自己平时都在玩,哭了。从最低级野怪开始打起。

Complete the function which converts a binary number (given as a string) to a decimal number.
上面试问题要求,将二进制(字符串形式存储)转化为10进制

这道题呢很简单,只需要按照2进制转化为10进制的规则去写即可
下面是我当时的解法,有点呆板,正常小白思路

unsigned bin_to_decimal(const char *bin)
{
  int len = strlen(bin);//先获得字符串长度,以便计算使用
  unsigned int fin=0;//一定要赋初值
  
  for(;*bin!='\0';bin++)
  {
    fin += (*bin - '0') * pow(2,len-1);
    len--;
  }
  
  return fin;
}

Bin to Decimal(codewars)
此处用到了strtol函数
long int strtol(const char *nptr, char **endptr, int base)
strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。
参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。
strtol详解

总结 面对问题先分析,然后找到它的数据结构,再用语言去实现他。