3

我需要创建一个程序,将一个数字系统转换为其他数字系统。我在 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。什么是正确的二进制?感谢您未来的答案!

4

1 回答 1

0

您已经在内存中拥有二进制形式的数字。那些 %d、%o 和 %x 只是类似 printf 的函数的提示,它们知道如何解释参数并在十进制/八进制/十六进制表示之间转换它。printf 没有二进制格式。相反,您可以遍历所有单独的位,如下所示:

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

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

于 2013-01-28T23:42:04.217 回答