在将八进制数转换为二进制数的C ++程序中,我能够运行该程序,但问题是输出即将到来,
Enter number in octal: 1
1 in octal:1
但是我们知道八进制是一个3位数,那么如何将结果作为001呢? 有关信息,我声明了一个函数,并在函数定义中使用了'binary'(我声明的变量)的返回值。 我会将二进制变量声明为二进制变量[3]吗?或者如果没有,那么正确的方法是什么?
答案 0 :(得分:1)
#include <iomanip>
cout << setfill('0') << setw(3) << binary
答案 1 :(得分:0)
如果前导零对你很重要......这可能就像是一个副本。参见&#34;如何在使用cout&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;运营商?&#34; (How can I pad an int with leading zeros when using cout << operator?)。
无论如何,除了(尽管如此?)问题中缺少示例代码......: - )
我建议查看该帖子关于 printf()的答案,我发现它比cout格式更简洁。
试试这个(假设你的号码存储在名为&#39; i&#39;的变量中,相应调整):
B
这是获取一些printf格式信息的一个地方(很多):http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/FUNCTIONS/format.html
fyi - 在内部,你的整数已经是二进制的,并且已经可能每个都使用32位(或者64位)......这取决于它们是否被重击,int,long等等。所以我怀疑改变你的变量声明并不多。
这里的技巧是要理解printf(或cout,如果你愿意)生成字符来表示输出上的二进制数(i,above)。这就是为什么编译器要求你使用123表示十进制,0123表示八进制(不是前导零)和0x123表示十六进制,所以它可以将它们从源代码中的字符(或在运行时输入)转换为正确的二进制格式给定变量的记忆。