Objective-C int to char - PullRequest
       1

Objective-C int to char

2 голосов
/ 07 апреля 2010

Как мне преобразовать int в char, а также обратно из char в int?

например, 12345 == abcde

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

Спасибо,
Тройник

Ответы [ 3 ]

7 голосов
/ 07 апреля 2010

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

В большинстве случаев лучше всего просто использовать значения 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 голосов
/ 05 августа 2014
unsigned char encryPt[1];
encryPt[0] = (char)1;
0 голосов
/ 07 апреля 2010

Если вы хотите просто отобразить 'a' -> 1, 'b' -> 2, ..., 'i' -> 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;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...