2017-01-30 255 views
-1

我必須將十進制值轉換爲顯示二進制值的字符串,例如給定8,我需要打印一個字符串「1000」。我有從十進制轉換爲二進制,但是當我直接從char數組中打印值時,我得到的問號而不是數字。我知道它與char數組讀取值的方式有關,但我無法弄清楚如何糾正這個問題。如何打印char數組的元素?

void dec2Bin(int value, char binaryString[]) { 

int remainder = 0; 
int binDigit = 0; 
int i = 0; 
while (value != 0) { 
    binDigit = value % 2; 
    value /= 2; 
    binaryString[i] = char(binDigit); 
    i++; 
} 

for (int k = i - 1; k > 0; k--) { 
    cout << binaryString[k]; 
} 
} 




int main() 
{ 
cout << "Enter a decimal number: "; 
int num; 
cin >> num; 

char binaryString[20] = ""; 

dec2Bin(num, binaryString); 

return 0; 
} 

回答

3

當你

binaryString[i] = char(binDigit); 

要指定十進制值01binaryString[i]。沒關係,char基本上只不過是一個小整數。

的問題來當您想要打印的價值,作爲唯一的重載<<運營商來處理char對待人物一個字符,並且在大多數編碼值01是不可打印的。

解決辦法有兩個:

  1. 要麼你轉換要打印到不被視爲一個字符一個更大的整數字符:

    cout << static_cast<int>(binaryString[k]); 
    
  2. 或者你做陣列包含實際的可打印字符:

    binaryString[i] = binDigit + '0'; 
    
+0

非常感謝你的親切陌生人。我一直試圖瞭解這個問題幾個小時。我用binDigit + 0,它完美地工作。 – so8857

相關問題