2017-09-14 2 views
-3
#include <iostream> 
#include<stdio.h> 
using namespace std; 

int main() 
{ 
    int x,i,y,d=0; 
    char c[255]; 
    gets(c); 
    for(i=0;c[i]!='\0';i++) 
    { 
     if(c[i]>=0 && c[i]<=9) 
     { 
      x=c[i]; 
      cout<<x; 
      d=(d*16)+x; 
     } 
     else if(c[i]>=65 && c[i]<=90) 
     { 
      y=c[i]-55; 
      d=(d*16)+y; 
     } 
    } 
    cout<<d; 
    return 0; 
} 

여기서 정수 d는 10 진수입니다. Code :: Blocks에서 실행되는 프로그램은 오류를 표시하지 않습니다. 도움을 주셔서 감사합니다 :)16 진수에서 10 진수로 변환하는 프로그램이 작동하지 않습니다.

+1

: 마찬가지로, 'A'65 (안 55)인가? – Legman

+0

'gets (c)'왜 이렇게할까요? 정보를 읽는 몇 가지 더 좋은 방법. 또한 작동하지 않는 것 – JackVanier

+0

작업에 [stream manipulators] (http://en.cppreference.com/w/cpp/io/manip/hex)를 사용하기 만하면됩니다. – Ron

답변

2

키보드 입력이 즉 '0', ASCII-문자를 반환합니다 .. 30..39하지 0..9입니다 '9'을. 무슨 특별히 작동하지

if(c[i]>='0' && c[i]<='9') 
    { 
     x=c[i] - '0'; 
     cout<<x; 
     d=(d*16)+x; 
    } 
    else if(c[i]>='A' && c[i]<='F') 
    { 
     y=c[i] - 'A'; 
     d=(d*16)+y; 
    } 
+2

'if (c [i]> = 'A'&& c [i] <= 'F')'와'y = c [i] - 'A'; '. –

관련 문제