首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C程序中存储“二进制”数据类型

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

Stack Overflow用户
提问于 2012-10-13 11:31:53
回答 1查看 4.1K关注 0票数 3

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

以下是我的工作片段:

代码语言:javascript
运行
复制
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。对于二进制,哪一个是正确的?感谢您未来的回答!

EN

回答 1

Stack Overflow用户

发布于 2013-01-29 07:42:04

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

代码语言:javascript
运行
复制
for(int i = 0; i < sizeof(num)*8; i++)
{
    printf("%u", !!(byte & (1 << i)));
}
printf("\n");

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12869692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档