[英]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;
例如,如果w
為3
且n
為1
,則得到001
。
還有許多其他SO問題和答案,以及使用直接方式以二進制形式顯示數字的方法,例如here 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.