Как преобразовать символ ascii в int в C

Как преобразовать символ ascii в int в C?

Как насчет:

int a_as_int = (int)'a'; 

Вы ищете:

 int c = some_ascii_character; 

Или просто конвертирование без назначения:

 (int)some_aschii_character; 

Я соглашаюсь на Ашота и Квана, но, возможно, вам нравится конвертировать ascii-шифр типа «7» в int как 7?

Затем я вспоминаю:

 char seven = '7'; int i = seven - '0'; 

или, может быть, вы получите предупреждение,

 int i = (int) (seven - '0'); 

исправлено после комментариев, спасибо.

Используйте ASCII для целочисленной функции atoi ():

 #include  int num = atoi("23"); 

Вы имеете в виду порядковое значение ASCII? Попробуйте лить типа:

 int x = 'a'; 

Как все говорили вам, вы можете преобразовать его напрямую … ЕСЛИ вы имели в виду нечто вроде «как преобразовать символ расширенного ASCII в его значение UTF-16 или UTF-32». Это РАЗЛИЧНЫЙ вопрос (по крайней мере, хороший). И один довольно сложно, если я правильно помню, если вы используете только «чистый» C. Тогда вы можете начать здесь: https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library- для-с / 114643 # 114643

(для ASCII Extended Я имею в виду одно из многих «расширений» для набора ASCII. 0-127 символов базового набора ASCII напрямую конвертируются в Unicode, а 128-255 – нет.). Например, ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 – это 8-битные расширения для 7-битного набора ASCII или (довольно известные) кодовые страницы 437 и 850.

Значение char в C неявно конвертируется в int. например, char c; ... printf("%d", c) char c; ... printf("%d", c) печатает десятичное ASCII-значение c и int i = c; помещает целочисленное значение ASCII c в i . Вы также можете явно преобразовать его с (int)c . Если вы имеете в виду что-то другое, например, как преобразовать ASCII-цифру в int, это будет c - '0' , что неявно преобразует c в int и затем вычитает значение ASCII '0' , а именно 48 (в C , символьные константы, такие как '0' имеют тип int, а не char, по историческим причинам).

Это невозможно в стандартной библиотеке C99 , если вы вручную не наберете карту из символьных констант в соответствующее значение ASCII int.

Символьные константы в C, подобные 'a' , не гарантируются ASCII.

C99 только дает некоторые гарантии относительно этих констант, например, что цифры должны быть смежными .

Слово ASCII появляется только в стандартном черновике C99 N1256 в нижних колонтитулах, а нижний колонтитул 173):

В реализации, использующей семибитовый набор символов US ASCII, печатными символами являются те, значения которых лежат от 0x20 (пробел) до 0x7E (тильда); управляющими символами являются те, значения которых лежат от 0 (NUL) до 0x1F (US) и символ 0x7F (DEL).

подразумевая, что ASCII – это не единственная возможность