Преобразовать символьную цифру в соответствующее целое число в C - PullRequest
83 голосов
/ 10 марта 2009

Есть ли способ преобразовать символ в целое число в C?

Например, от '5' до 5?

Ответы [ 14 ]

0 голосов
/ 26 февраля 2010

Когда мне нужно сделать что-то подобное, я предварительно запекаю массив со значениями, которые хочу.

const static int lookup[256] = { -1, ..., 0,1,2,3,4,5,6,7,8,9, .... };

Тогда преобразование легко

int digit_to_int( unsigned char c ) { return lookup[ static_cast<int>(c) ]; }

Это в основном подход, принятый многими реализациями библиотеки ctype. Вы можете легко адаптировать его для работы с шестнадцатеричными цифрами.

0 голосов
/ 10 марта 2009
char chVal = '5';
char chIndex;

if ((chVal >= '0') && (chVal <= '9')) {

    chIndex = chVal - '0';
}
else 
if ((chVal >= 'a') && (chVal <= 'z')) {

    chIndex = chVal - 'a';
}
else 
if ((chVal >= 'A') && (chVal <= 'Z')) {

    chIndex = chVal - 'A';
}
else {
    chIndex = -1; // Error value !!!
}
0 голосов
/ 10 марта 2009

Если это просто один символ 0-9 в ASCII, то вычитание значения нулевого символа ASCII из значения ASCII должно работать нормально.

Если вы хотите преобразовать большие числа, тогда подойдет следующее:

char *string = "24";

int value;

int assigned = sscanf(string, "%d", &value);

** не забудьте проверить статус (который должен быть 1, если он работал в вышеуказанном случае).

Paul.

0 голосов
/ 10 марта 2009

Вы могли бы привести его к типу int (или к числу с плавающей точкой или к двойному или к тому, что вы еще хотите сделать с ним) и сохранить его в переменной anoter.

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