2012-03-29 5 views
2

그래서 처음에 인덱스에서 문자를 사용하고 nsnumber로 변환 한 다음 int 값을 얻으려고했지만 9 값을 얻었다. 그래서 나는 무엇이 잘못되었는지 알았고, 나는 그 캐릭터 자체의 int를 얻고있다.int 값 대신 char의 실제 값을 얻을 수있는 방법

그래서 조금 읽었으며 atoi가 발견되었지만이 오류가 발생하여 내 앱이 작동을 멈추지 않습니다. jsut가 일시 중지합니다.

내 코드 : int current = atoi ([startSquares characterAtIndex : i]);

이제 startSquares 숫자의 큰 문자열이 가득하고,이 위의 라인은 내가 0에서 99

+0

그냥 '0'의 char 값을 뺍니다. – mac

답변

3

57 is ASCII for the digit '9'. 모든 숫자를 인코딩하기 때문에,

int digit = char - '0'; 

이 트릭 작품 :은 "숯불의 값"하여 "는 문자가 나타내는 자리의 숫자 값을"을 의미한다고 가정하면, 당신은 ASCII에서 사용할 수있는 간단한 트릭을 사용할 수 있습니다 숫자 0 (ASCII 코드 48)으로 시작합니다. 따라서 012에서(48을 쓰는 또 다른 방법)을 뺄 때 숫자 '9'의 값인 9를 얻습니다.

+0

무슨 뜻입니까? 현재 '9'문자의 값이 9가 되길 원합니다. –

+0

@PeterP 다음은 답입니다. 48을 빼거나 '0'을 빼야합니다. . – dasblinkenlight

+0

ohhh, -'0 '은 가치가 48입니다. 아, 네가 지금 무슨 뜻인지 알게 되네. –

0

로 이동 for 루프에이 나쁜 디자인, 당신은 잡아 int 배열을 사용해야합니다 당신의 사각형.

그러나 당신이 당신의 접근 방식을 고집한다면, dasblinkenlight의 길은 갈 길입니다. 당신이 읽은 char로부터 char 값 '0'을 뺀다.

+0

문제는 레벨과 같습니다. 그래서이 복잡한 배열을 매번 사용하므로 문자열을 만들고이 값을 "사용"하고 싶습니다. 이 번호는 각 게임마다 다른 배열을 초기화하는 데 사용됩니다. –

-1

문자 '9'를 갖고 숫자 값 9를 원하면 c - '0'을 사용할 수 있습니다. 그것은 이것이 당신이 원하는 것임을 분명하지 않습니다.

일련의 숫자 (한 자리 이상)가 포함 된 char 배열이있는 경우 해당 배열을 통해 포인터를 앞으로 이동해야합니다. 그러면 그 포인터로 atoi를 호출 할 수 있습니다. digit (isdigit 참조) 또는 sscanf를 사용하거나 NSString에 넣고 intValue를 사용하여 다음 숫자를 얻을 수 있습니다. 하지만 그건 NSNumber가 아니라 NSInteger를 줄 것입니다. 나는 네가 직접 NSNumber를 원한다고 생각하지 않는다.

+0

태그와 코드가 분명히 obj c임을 나타냅니다. – Pepe

+0

이들은 모두 한자리 숫자이며 atoi를 사용하고 있으며 게임을 일시 중지합니다. –

+0

그래, 나는 그것이 을 치고 직후에 obj c라는 것을 알아 채고 반응을 편집했다. – DRVic

관련 문제