将整数转换为相当大的向量或字符串

时间:2015-02-10 01:02:28

标签: c++

我正在将十进制整数转换为二进制而不使用字符串(在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;    

2 个答案:

答案 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;

例如,如果w3n1,您将获得001

还有很多其他S.O.问题和答案以更直接的方式显示二进制数字,例如here