Как перевести символ в число си
Перейти к содержимому

Как перевести символ в число си

  • автор:

Как перевести символ в число си

Нередко в программах встречается ситуация, когда надо преобразовать число в строку или строку в число. Для этой цели в стандартной библиотеке языка С определены функции 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:

  1. Using Typecasting
  2. Using sscanf()
  3. Using atoi()

Let’s discuss each of these methods in detail.

1. Using Typecasting

Method 1:

  1. Declare and initialize our character to be converted.
  2. Typecast the character to convert character to int using int.
  3. Print the integer using printf.

Example:

Method 2:

  1. Declare and initialize our character to be converted.
  2. Declare another variable as int N and assign the character ch to the N.
  3. 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?

Peter Mortensen's user avatar

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:

Jean-François Fabre's user avatar

Use the ASCII to Integer atoi() function which accepts a string and converts it into an integer:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *