c语言如何把一个字符串格式的二进制数转化为整数型的十进制数?

如题所述

首先要说,在计算机里面不存在十进制数。我们看到的输出的十进制数,其实是C编译器把真正的二进制数的数值以十进制形式显示在屏幕上。如果说计算机里面有十进制数的话,那么BCD数可以算是一种形式的十进制数。

而题目中的字符串格式的二进制数,也就是一串的'0','1'字符;转化为整数型其实就是求得其实际数值,最后以十进制形式输出。

#include <stdio.h>
int main()
{
  long int m;
  char c0[50],*c ;
  while(scanf("%s",c0)!=EOF){
   m = 0;c=c0;
   while(*c)
    m += (m + *(c++)-'0'); 
   printf("%d\n",m);
  }
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-26
首先要说,在计算机里面不存在十进制数。我们看到的输出的十进制数,其实是C编译器把真正的二进制数的数值以十进制形式显示在屏幕上。如果说计算机里面有十进制数的话,那么BCD数可以算是一种形式的十进制数。
而题目中的字符串格式的二进制数,也就是一串的'0','1'字符;转化为整数型其实就是求得其实际数值,最后以十进制形式输出。
#include
int main()
{
long int m;
char c0[50],*c ;
while(scanf("%s",c0)!=EOF){
m = 0;c=c0;
while(*c)
m += (m + *(c++)-'0');
printf("%d\n",m);
}
return 0;
}
第2个回答  2016-10-30
可以用移位法,,,,从右开始,第几个是1,就使用1往左移几位,累加起来,,,最后得到十进制数了
。。追问

能不能写一下具体的代码 我是初学者 不是很懂

第3个回答  推荐于2018-03-13
char s[33]={"11001010"};
int i,x=0;
for(i=0;s[i];i++)
x=x*2+s[i]-'0';
printf("%d",x);本回答被提问者和网友采纳
相似回答