Как я могу получить фактическое значение char вместо значения int - PullRequest
2 голосов
/ 29 марта 2012

Итак, сначала я пытался использовать символ в индексе, затем преобразовать его в nsnumber, а затем получить значение int, но для 9 я получил значение 57. Итак, я знал, что идет не так, я получаюint самого символа.

Так что я немного прочитал и нашел atoi, но я получаю эту ошибку, которая не приводит к сбою моего приложения, jsut приостанавливает его.

Мой код: int current= atoi ([startSquares characterAtIndex: i]);

Теперь startSquares - это большая строка, полная цифр, и эта строка находится в цикле for, где я перехожу от 0 до 99.

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

57 - ASCII для цифры '9'. Предполагая, что под «значением символа» вы подразумеваете «числовое значение цифры, которую представляет символ», вы можете использовать простой трюк, доступный в ASCII:

int digit = char - '0';

Этот прием работает, потому что все цифры кодируются по порядку, начиная с цифры ноль (код ASCII 48). Поэтому, когда вы вычитаете '0' (что является еще одним способом записи 48) из 57, вы получаете 9, значение цифры '9'.

0 голосов
/ 29 марта 2012

Если у вас есть символ c '9' и вы хотите числовое значение 9, вы можете использовать c - '0'.Не ясно, что это то, что вы хотите, хотя.

Если у вас есть массив символов, содержащий серию чисел (более одной цифры), вам нужно продвинуть указатель через этот массив, а затем вы можете вызвать atoi с этим указателем, когда он указываетна цифру (см. isdigit), или вы можете использовать sscanf, или вы можете поместить его в строку NSString и получить следующий номер, используя intValue.Но это даст вам NSInteger, а не NSNumber.Я не думаю, что вы действительно хотите NSNumber, так как вы не можете напрямую взять квадрат одного.

0 голосов
/ 29 марта 2012

Это плохой дизайн, вы должны использовать массив int для хранения ваших квадратов.

Но если вы абсолютно настаиваете на том, чтобы придерживаться своего подхода, то путь dasblinkenlight - это путь.Просто вычтите значение типа char '0' из прочитанного вами символа.

...