我正在将十进制整数转换为二进制而不使用字符串(在Visual Studio 2013中):
int de2bi(int de)
{
int bi = 0, pos = 1;
while(de > 0)
{
bi = bi + (de % 2) * pos;
de = de / 2;
pos *= 10;
}
return bin;
}
这样,输出中的二进制表示实际上是十进制数。问题是我想控制二进制输出中的位数,即不是0我想要00或者不是1我想要01。
如何将输出转换为具有适当大小的矢量/字符串,以便在转换十进制数字' 1'时,我可以使用' 001'或者' 0001'在返回的输出中,取决于我输出中需要多少位数?
编辑:我从下面的答案中采用了代码。但它并没有改变输出向量的长度' bin'在我的代码中。它只打印' 000'在屏幕上。
std::cout<<std::setw(3)<<std::setfill('0')<<bin;
答案 0 :(得分:0)
std::string de2bi(int de){
std::string bin = "";
if( de == 0 ){
return "0";
}
else if( de < 0 ){
return "";
}
while(de){
bin = std::to_string(de % 2) + bin ;
de = de / 2;
}
return bin;
}
您可以在此处http://cpp.sh/5cx
进行测试答案 1 :(得分:0)
调用de2bi
函数后,您可以将结果n
显示为w
字符宽度输出,如下所示:
#include <iomanip>
std::cout << std::setw(w) << std::setfill('0') << n;
例如,如果w
为3
且n
为1
,您将获得001
。
还有很多其他S.O.问题和答案以更直接的方式显示二进制数字,例如here