Как перевести символ в число си
Нередко в программах встречается ситуация, когда надо преобразовать число в строку или строку в число. Для этой цели в стандартной библиотеке языка С определены функции strtol() и snprintf() .
Из строки в число. strtol
Функция strtol() преобразует строку в число типа long int . Функция определена в заголовочном файле stdlib.h и имеет следующий прототип:
str — строка с числом, которое надо преобразовать в числовой тип. Ключевое слово restrict указывает компилятору оптимизировать код и что никакой другой параметр не будет указывать на адрес данного параметра.
str_end — указатель на последний символ строки. Данный параметр можно игнорировать, передавая ему значение NULL
base — основание, система исчисления, в которую надо преобразовать данные (значение от 2 до 36).
Результатом функции является преобразованное число типа long .
Например, преобразуем строку в число в десятичной системе:
В примере выше второй параметр функции никак не использовался — мы ему передавали значение NULL , и функция нормально работала. Однако он может быть полезен, если нам надо получить остаток строки, которая идет после числа:
Из числа в строку. snprintf
Функция snprintf() преобразует число в отформатированную строку. Функция определена в заголовочном файле stdio.h и имеет следующий прототип:
str_buffer — строка, в которую помещается преобразованное число.
buffer_size — максимальное количество символов строки. Функция записывает в строку buffer-size — 1 байт и добавляет концевой нулевой байт
format — задает формат преобразования в строку.
При успешном преобразовании функция возвращает количество символов, записанных в строку (исключая концевой нулевой байт). При неудачном преобразовании возвращается отрицательное число.
Как перевести символ в число си
There are 3 ways to convert the char to int in C language as follows:
- Using Typecasting
- Using sscanf()
- Using atoi()
Let’s discuss each of these methods in detail.
1. Using Typecasting
Method 1:
- Declare and initialize our character to be converted.
- Typecast the character to convert character to int using int.
- Print the integer using printf.
Example:
Method 2:
- Declare and initialize our character to be converted.
- Declare another variable as int N and assign the character ch to the N.
- Print the integer using printf.
Example:
2. Using sscanf
Reads data from s and stores it in the places specified by the additional arguments in the parameter format. Below is the C program to convert char to int using sscanf.
Example:
3. Using atoi
If the execution is successful, the atoi() method returns the converted integer value. If the given string cannot be converted to an integer, it will return 0. Below is the C program to convert char to int using atoi()
Преобразование строки в число и обратно
При составлении программ часто возникает задача получения данных, например, введенных в поле редактирования в числовой форме и вывод результата в текстовое поле.
Число, которое принимает участие в вычислительных процедурах, должно быть представлено в виде строки символов, понятных пользователю, для вывода на экран.
Например, число 235 состоит из трех символов — ‘2’, ‘3’, ‘5’.
Целью рассмотрения данной задачи является приведение символьной строки к соответствующему ей числовому виду.
Для этого нужно разбить символьную строку на значащие разряды и выбрать цифры, соответствующие каждому значащему разряду.
Каждый символ цифры имеет соответствующий ему код в базовой таблице кодировки:
| Символ цифры | Десятичный код | Шестнадцатеричный код | Двоичный код |
| 0 | 48 | 0x30 | 0011 0000 |
| 1 | 49 | 0x31 | 0011 0001 |
| 2 | 50 | 0x32 | 0011 0010 |
| 3 | 51 | 0x33 | 0011 0011 |
| 4 | 52 | 0x34 | 0011 0100 |
| 5 | 53 | 0x35 | 0011 0101 |
| 6 | 54 | 0x36 | 0011 0110 |
| 7 | 55 | 0x37 | 0011 0111 |
| 8 | 56 | 0x38 | 0011 1000 |
| 9 | 57 | 0x39 | 0011 1001 |
В соответствии с приведенной таблицей, значащая часть каждого символа цифры содержится в младшей тетраде битов (младших четырех разрядах). Для получения цифры, соответствующей символу, достаточно произвести операцию:
n = s & 0x0F;
где n — значащая цифра, s — символ цифры. Маска 0x0F позволяет оставить только младшие 4 значащих разряда. Старшие 4 разряда становятся равны 0.
При решении обратной задачи — представления числа в виде текстовой строки — каждая цифра значащего разряда преобразуется в соответствующий ей символ с помощью операции:
s = n | 0x30;
Указанная операция добавляет двоичное значение 0011 в старшие 4 разряда, тем самым формируя код символа из соответствующей значащей цифры.
Реализация на C++

Результат выполнения
How to convert an ASCII character into an int in C
How can I convert an ASCII character into an int in C?
![]()
8 Answers 8
I agree to Ashot and Cwan, but maybe you like to convert an ascii-cipher like ‘7’ into an int like 7?
Then I recoomend:
or, maybe you get a warning,
corrected after comments, thanks.
Are you searching for this:
Or just converting without assignment:
![]()
Use the ASCII to Integer atoi() function which accepts a string and converts it into an integer: