在C程序中存储“二进制”数据类型

时间:2012-10-13 03:31:53

标签: c++

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

1 个答案:

答案 0 :(得分:0)

你已经在内存中以二进制形式拥有该号码。那些%d,%o和%x就像printf类函数的提示一样,知道如何解释参数并在十进制/八进制/十六进制表示之间进行转换。 printf没有二进制格式。相反,您可以迭代所有单个位,如下所示:

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

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