我需要创建一个程序,将一个数字系统转换为其他数字系统。我在Windows(Dev C ++)中使用itoa,我唯一的问题是我不知道如何将二进制数转换为其他数字系统。所有其他数字系统转换相应地工作。这是否涉及使用%?
存储要转换的输入以下是我工作的片段:
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,对于八进制我使用%o和十六进制我使用%x。什么可能是二进制的正确的?感谢您将来的答案!
答案 0 :(得分:0)
你已经在内存中以二进制形式拥有该号码。那些%d,%o和%x就像printf类函数的提示一样,知道如何解释参数并在十进制/八进制/十六进制表示之间进行转换。 printf没有二进制格式。相反,您可以迭代所有单个位,如下所示:
for(int i = 0; i < sizeof(num)*8; i++)
{
printf("%u", !!(byte & (1 << i)));
}
printf("\n");
这将从左开始打印一个字节的所有位。