Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Как насчет:

int a_as_int = (int)'a';

Ответ 2

Вы ищете:

int c = some_ascii_character;

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

(int)some_aschii_character;

Ответ 3

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

Затем я recoomend:

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

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

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

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

Ответ 4

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

#include <stdlib.h>

int num = atoi("23");

Ответ 5

Значение A char в C неявно конвертируется в int. например, 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, по историческим причинам).

Ответ 6

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

int x = 'a';

Ответ 7

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

Ответ 8

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

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

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

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

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

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