簡體   English   中英

將整數轉換為較大的向量或字符串

[英]Converting integer to a sizable vector or string

我將一個十進制整數轉換為二進制而不使用字符串(在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而不是0,或者要01,而不是1。

如何將輸出轉換為具有適當大小的向量/字符串,以便在轉換十進制數字“ 1”時,在返回的輸出中可以有“ 001”或“ 0001”,這取決於我需要多少位數?

編輯:我從下面的答案中采用了代碼。 但這並沒有改變我的代碼中輸出向量“ bin”的長度。 它僅在屏幕上打印“ 000”。

std::cout<<std::setw(3)<<std::setfill('0')<<bin;    
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

調用de2bi函數后,可以將結果n顯示為w字符寬的輸出,如下所示:

#include <iomanip>

std::cout << std::setw(w) << std::setfill('0') << n;

例如,如果w3n1 ,則得到001

還有許多其他SO問題和答案,以及使用直接方式以二進制形式顯示數字的方法,例如here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM