2017-01-30 3 views
-1

십진수 값을 이진 값을 나타내는 문자열로 변환해야합니다. 8이 주어지면 문자열 "1000"을 출력해야합니다. 10 진수에서 2 진수로의 변환이 있지만 char 배열의 값을 직접 인쇄 할 때 숫자 대신 작은 물음표가 나타납니다. char 배열에서 값을 읽는 방식과 관련이 있다는 것을 알고 있지만 문제를 해결하는 방법을 알 수는 없습니다. 당신이문자 배열의 요소는 어떻게 인쇄합니까?

binaryString[i] = char(binDigit); 

을 수행 할 때

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

당신은 진수 값 0 또는 binaryString[i]1를 할당한다. 괜찮습니다. char은 기본적으로 작은 정수 이상입니다. 당신이 값을 인쇄 할 경우에만 과부하 << 운영자가 char 취급 문자로 문자를 처리하기로

문제는, 온다, 대부분의 인코딩의 값 01는 인쇄되지 않습니다.

cout << static_cast<int>(binaryString[k]); 
  • 또는 당신이 만드는 : 어느 당신이 문자로 처리되지 않습니다 더 큰 정수로 인쇄 할 문자를 변환

    1. :

      는 두 가지 해결책이 있습니다 배열에는 실제로 인쇄 가능한 문자가 포함됩니다.

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

    친절하게 낯선 분, 고마워요. 나는 그 문제를 몇 시간 동안 이해하려고 노력해왔다. binDigit + 0을 사용하고 완벽하게 작동합니다. – so8857

    관련 문제