C语言程序: 将二进制转换成十进制

Write a program in C that converts binary numbers into hexadecimal
numbers (only required to work on positive numbers). The binary numbers are
provided to the program via standard input and are at most 16 bits long. Each
binary line is separated via a return character. Place your answer in the file called
'bin2hex.c' in the Q3 directory. An example of the program running is given below
(input typed by the user is given in bold):
$ ./bin2hex
1111111111111111
0xFFFF
0000000000000000
0x0
0
0x0
10
0x2
1010
0xA
11110000
0xF0
101001011111
0xA5F
01010
0xA
111
0x7

根据要求中的限制,可以直接利用接收字符函数即可实现。代码如下,输入的是0或者1,那么一直转换;直到输入不是0或者1,退出程序。可以直接拷贝,验证正确:

#include<stdio.h>
#include<stdlib.h>
int main()
{
  char ch;
  unsigned int num;

  while( 1 )//一直循环
  {
    num = 0;
    while( (ch = getchar()) != '\n' )
    {
      if ('0' <= ch && ch <= '1')
        num = (num << 1) + ch - '0';
      else
        exit(1);//如果输入的不是0或者1,那么退出程序
    }
    printf("0x%X\n", num);
  }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-21
简单方法就是采用字符串映射法,方便实现!
定义一个16个变量的字符数组,分别对应0-15这16个字符。分析串,得到对应的字符即可
第2个回答  2014-07-21
#include <stdio.h>

int Bin2Hex(char binary[]) {
int i,num = 0;
for(i = 0; binary[i]; ++i)
num = 2 * num + binary[i] - '0';
return num;
}

int main() {
char binary[32] = "1010101010001111";
printf("0X%X\n",Bin2Hex(binary));
return 0;
}

c语言把二进制数转换成十进制数的程序怎么写。
按照如下步骤即可用C语言把二进制数转换成十进制数的程序:1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

c语言把二进制数转换成十进制数的程序怎么写。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a = 0b10000001;printf("%d", a);。3、编译器运行test.cpp文件,此时输入的8位二进制数被成功用十进制进行了输出。

如何使用C语言编写二进制转换为十进制的程序
include <stdio.h>#include <math.h>#include <string.h>\/* 任意进制数转十进制数 *\/\/* char *value : 其他进制数,以字符串形式存储 *\/\/* int *result : 转换后的十进制数 *\/\/* int radix : 待转换的进制 *\/\/* R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y *\/\/* Y...

c语言怎么将2进制转化为10进制
include<stdio.h>int Sum(int a[]);int power(int b);int main(){ int array[8],i; printf("输入一个8位二进制数:"); for(i=0;i<8;i++) { scanf("%1d",&array[i]); } printf("转换为十进制数后是:%d\\n",Sum(array)); return 0;}int Sum(int ...

怎样用C语言将二进制数转换成十进制
将二进制转成十进制,按权值展开求和即可。可以通过以下代码解决:include <stdio.h> include <stdlib.h> int main(){ char a[17];gets(a);int len,i,sum=0,m,j;len=strlen(a);if(len<=16){ for(i=0;i<len;i++){ m=1;if(a[i]=='1'){ for(j=1;j<=len-i-1;j++)m*...

C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出...
将二进制数转换成十进制,一般是从字符串转换成一个整数,按位值乘以权值相累加得到结果。如:1010=1*2^3+0*2^2+1*2+0 =(((1*2)+0)*2)+1)*2+0 将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)...

用C语言分别写出十进制转二进制,二进制转十进制的详细程序
二进制转化为十进制 include<stdio.h> include<string.h> int main(){ char a[33];int i, num = 0;scanf("%s", a);for(i=strlen(a)-1; i>=0; i--){ num*=2; \/*如果用位运算的话,速度会更快*\/ num+=a[i]-'0';} printf("%d\\n", num);return 0;} 十进制转化为二...

C语言,利用函数实现将二进制数转化为十进制数并实现相加。
1、2进制10进制的转换方法:二进制数1101转十进制: 1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=13 附加一个八进制转十进制的例子吧: 507(八进制转10进制): 5×8的2次幂+0×8的1次幂+7×8的0次幂= 5×64+0×8+7×1=327(10进制) 2、例程...

怎样用C语言将二进制数转换成十进制
\/\/---#include<stdio.hlongintbtd(char*s)\/*将以字符串形式存储在s地址中的二进制数字转换为对应的十进制数字*\/{longintrt=0;inti,n=0;while(s[n])n++;for(--n,i=n;i=0;i--)rt|=(s[i]-48)<<n-i;returnrt;}intmain(intargc,char*argv[]){printf(%ld,btd(11011));\/*示例...

怎样写c语言将二进制转化成十进制
include<stdio.h> include<string.h> define MAX 8 \/\/可根据自己要输入2进制长度自动变动 int main(){ char s[MAX],i,p = 1,x = 0;gets(s);for(i = strlen(s);i > 0 ;i--){ x = x + (s[i-1]-'0')*p;p*=2;} printf("转换为十进制为:%d\\n",x);return 0;} ...

相似回答