我需要创建一个程序,转换一个数字系统到其他数字系统。我在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。对于二进制,哪一个是正确的?感谢您未来的回答!
发布于 2013-01-29 07:42:04
你在内存中已经有了这个二进制形式的数字。这些%d、%o和%x只是作为类似printf的函数的提示,以了解如何解释参数并在十进制/八进制/十六进制表示之间进行转换。printf没有二进制格式。相反,您可以遍历所有单独的位,如下所示:
for(int i = 0; i < sizeof(num)*8; i++)
{
printf("%u", !!(byte & (1 << i)));
}
printf("\n");这将打印一个字节的所有位,从左开始。
https://stackoverflow.com/questions/12869692
复制相似问题