Как преобразовать int в char, а также обратно из char в int?Objective-C int to char
12345 == например ABCDE
Прямо сейчас у меня есть это, используя целую кучу сазе, удивление, если есть более разумный способ сделать это?
Спасибо,
Tee
Как преобразовать int в char, а также обратно из char в int?Objective-C int to char
12345 == например ABCDE
Прямо сейчас у меня есть это, используя целую кучу сазе, удивление, если есть более разумный способ сделать это?
Спасибо,
Tee
Я бы рекомендовал использовать значение 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
Если вы хотите просто карту 'а' -> 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?) И переполнении (мой код не проверяет его).
unsigned char encryPt[1];
encryPt[0] = (char)1;
Вы запрашиваете довольно странное обращение. например, что должно быть преобразовано в 'zzz'? – Vlad
да забыл упомянуть, но я ищу только 0-9. В основном я делаю грязную функциональность совместного использования. Численное значение - это ответ, и если я покажу его как есть, удовольствие уйдет. Поэтому просто сделать что-то простое, чтобы сделать это не столь очевидным. Спасибо, тройник – teepusink