2010-04-07 3 views
2

Как преобразовать int в char, а также обратно из char в int?Objective-C int to char

12345 == например ABCDE

Прямо сейчас у меня есть это, используя целую кучу сазе, удивление, если есть более разумный способ сделать это?

Спасибо,
Tee

+4

Вы запрашиваете довольно странное обращение. например, что должно быть преобразовано в 'zzz'? – Vlad

+0

да забыл упомянуть, но я ищу только 0-9. В основном я делаю грязную функциональность совместного использования. Численное значение - это ответ, и если я покажу его как есть, удовольствие уйдет. Поэтому просто сделать что-то простое, чтобы сделать это не столь очевидным. Спасибо, тройник – teepusink

ответ

7

Я бы рекомендовал использовать значение ASCII и просто типаж.

В большинстве случаев лучше всего использовать значения ASCII для кодирования букв; однако, если вы хотите использовать 1 2 3 4 для представления 'a' 'b' 'c' 'd', вы можете использовать следующее.

Например, если вы хотите, чтобы преобразовать букву 1 к «а» вы можете сделать:

char letter = (char) 1 + 96; 

как в ASCII 97 соответствует символ «а». Точно так же вы можете преобразовать символ «а» до целого числа 1 следующим образом

int num = (int) 'a' - 96; 

Конечно это просто проще использовать значения ASCII для начала и избегать добавления или вычитания, как показано выше. :-D

0

Если вы хотите просто карту 'а' -> 1, 'B' -> 2, ..., 'я' -> 9, вы должны сделать, просто следующее:

int convert(char* s) 
{ 
    if (!s) return -1; // error 
    int result = 0; 
    while (*s) 
    { 
     int digit = *s - 'a' + 1; 
     if (digit < 1 || digit > 9) 
      return -1; // error 
     result = 10 * result + digit; 
    } 
    return result; 
} 

Однако вы все равно должны заботиться о 0s (какую букву вы хотите сопоставить с 0?) И переполнении (мой код не проверяет его).

0
unsigned char encryPt[1]; 
encryPt[0] = (char)1;