2014-02-06 6 views
0

Im 문제없이 대부분의 것을 변환 할 수 있으므로 필요한 경우 Google 검색을 수행 할 수 있습니다. 나는 이것을 이해할 수 없다.C++ Int로 변환 할 때

char map[40] = {0,0,0,0,0,1,1,0,0,0,1,0,1... etc 

내가 올바른 정수로 문자를 변환하려고하지만, 아무리 내가 무엇을하려고 나는 아스키 값을 얻을 :

나는 문자 배열이 같은이 48/49

변환과 캐스트의 여러 가지 조합을 시도했지만 char가 아닌 0이나 1로 끝날 수는 없습니다.

누구든지 나를 도와 줄 수 있습니까? 감사합니다. .

+0

는 http://stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c – sajas

+1

그것은 당신의 문자 배열이 더 같은 외모 0 ', ...,'1 ', ...} 48 및 49는 표시 문자 0 및 1에 대한 ASCII 항목입니다. 자세한 정보를 제공하십시오. – ypnos

답변

2

정수를 나타내는 문자의 ASCII 범위는 48에서 57 ('0'에서 '9'까지)입니다. 문자에서 기본 값 48을 뺀 값을 가져와야합니다. { '0', '

char map[40] = {'0','0','0','0','0','1','1','0','0','0','1','0','1'...}; 
int integerMap[40]; 

for (int i = 0 ;i < 40; i++) 
{ 
    integerMap[i] = map[i] - 48 ; 
    // OR 
    //integerMap[i] = map[i] - '0'; 


} 
1

char가 리터럴 인 경우 (예 : '0' 당신이해야 할 것 int로 변환, (인용 부호에주의) : 당신의 map 배열에서

int i = map[0] - '0'; 

그리고 물론 유사한 작업을. 또한 에러 체크를 신중하게하면 int가 0-9 범위에 있다는 것을 알 수 있습니다.

48/49가되는 이유는 앞서 말씀 드린 것처럼 int i = (int)map[0];과 같은 리터럴의 직접 변환은 char의 ASCII 값을 제공하기 때문입니다.

관련 문제