2012-10-13 50 views
2

我需要创建一个将一个数字系统转换为其他数字系统的程序。我在Windows(Dev C++)中使用itoa,唯一的问题是我不知道如何将二进制数转换为其他数字系统。所有其他数字系统转换工作相应。这是否涉及存储要使用%转换的输入?在C程序中存储“二进制”数据类型

这是我工作的一个片段:

case 2: 
     { 
      printf("\nEnter a binary number: "); 
      scanf("%d", &num); 
      itoa(num,buffer,8); 
      printf("\nOctal  %s",buffer); 
      itoa(num,buffer,10); 
      printf("\nDecimal  %s",buffer); 
      itoa(num,buffer,16); 
      printf("\nHexadecimal %s \n",buffer); 
      break; 
     } 

对于小数我用%d,八进制我用‰和十六进制我使用%×。什么可能是二进制正确的?感谢未来的答案!

+1

基本上是一个副本:http://stackoverflow.com/questions/2343099/convert-binary-format-string-to-int-in-c –

+2

简答:没有。大家可以做的只是读取一个字符串(例如,用'%s')然后转换(例如用'strtol')。 –

+1

你知道'itoa'是非标准的,它可能在其他系统上崩溃? – nhahtdh

回答

0

您已经在内存中以二进制形式存在该数字。这些%d,%o和%x只是提示printf-like函数知道如何解释一个参数并在十进制/八进制/十六进制表示之间进行转换。 printf没有二进制格式。相反,你可以遍历所有各个位,如下所示:

for(int i = 0; i < sizeof(num)*8; i++) 
{ 
    printf("%u", !!(byte & (1 << i))); 
} 
printf("\n"); 

这将打印一个字节(或多个)的所有位,从左边开始。

相关问题