求一个简洁的c语言函数将2进制数转换成10进制数,这个二进制数是函数的输入·
发布网友
发布时间:2022-06-03 12:23
我来回答
共3个回答
热心网友
时间:2023-10-18 15:58
假定是2进制整数。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int bin_2_d(char *s){
int i,L,sum=0;
L = strlen(s); //2进制数位数
for (i=0;i<L;i++) sum=sum+ (s[i]-'0') *pow(2,L-i-1);
return sum;
}
void main(){
char b[]="10001000"; //2进制数以字符串形式输入存放
int r;
r = bin_2_d(b); //转为10进制数
printf("%x, %d",r,r); //按16进制和10进制输出检查。
exit(0);
}
热心网友
时间:2023-10-18 15:58
#include"stdio.h"
#include"math.h"
translate(int a)
{
int sum=0,i=0;
while(a>0)
{
sum=sum+a%10*pow(2.0,i); //i表示取的是第几位,应该乘上2的i次方。
a=a/10;
i++;
}
printf("%d\n",sum);
getch();
}
main()
{
int input;
printf("请输入一个二进制数:");
scanf("%d",&input);
translate(input);
}
结果已验证,请采纳。
热心网友
时间:2023-10-18 15:58
#include <stdio.h>
int bin_to_dec(char s[]);
int main()
{
char bin_str[20] = "11010101";
printf("(%s)B = %d\n", bin_str, bin_to_dec(bin_str));
return 0;
}
int bin_to_dec(char s[])
{
int sum = 0;
int i;
int v = 0x00000001;
for(i=0;s[i]!='\0';i++)
{
;
}
i--;
for(;i>=0;i--)
{
sum += (s[i]-'0')*v;
v <<= 1;
}
return sum;
}