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

Как перевести char в int в си

  • автор:

Как перевести char в int в си

Віримо в перемогу ЗСУ!
Працюємо з 09:00 до 18:00 Пн-Сб Працюємо з 09:00 до 19:00 Пн-Пт —> Магазин у відпустці до 19.08.2023 —>

  • Ваша корзина пуста!
  • Главная
  • Статьи
  • Преобразование Char в Integer и обратно

Преобразование целочисленных переменных int в символьные переменные char в Arduino IDE — довольно простой процесс, но заслуживающий отдельной напоминалки. Сложнее всего понять зачем вообще нужен тип Char. Напомню, что это однобайтный символьный тип.

Для преобразования Int в Char потребуется сначала переделать integer в строку String, после чего конвертировать String в массив Char. Все так закручено специально, чтобы никто не догадался 🙂

Давайте для начала рассмотрим более простой вариант — преобразование символа Char в Integer, а затем перейдем к основному вопросу.

Шаг 1: Char в Integer

Для конвертации char в integer используйте следующую короткую комбинацию:

int a;
char b;
a=b-'0';

Шаг 2: Integer в Char

В следующем примере будет задействована вспомогательная переменная String. И самое сложное здесь — это преобразование в массив символов при помощи специальной функции.

Код выглядит следующим образом:

int a=1;
char b[2];
String str;
str=String(a);
str.toCharArray(b,2);

Используя этот пример, вы преобразуете integer в char. Однако, в полученном массиве поместится только цифра в пределах от -9 до 99. Для большего количества цифр вам необходимо будет увеличить размер массива и вместо записи:

char b[2];

Нужно будет вставить

char b[5];

таким образом можно будет отобразить в символах integer, который занимает 5 символов. Так же можно использовать массив char и другой длинны.

Спасибо за внимание! До новых встреч!

Arduino SIM800 входящий звонок

Привет фанатам GSM автоматики! Подпишитесь, чтобы ничего не пропустить, и начнем очередной выпус..

Схемы включения транзистора

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

MOC3023 оптосимистор

MOC3023 оптосимистор

Оптопара с симисторным выходом для импульсного управления мощным симистором от логических сигналов к..

ЦАП цифро-аналоговый преобразователь I2C

Цифро-аналоговый преобразователь с I2C интерфейсом на основе микросхемы MCP4725Используетс..

Автоматическое управление твердотопливным котлом Arduino Nano

Автоматическое управление твердотопливным котлом Arduino Nano

Предмет проекта домашней автоматики Вашему вниманию представлен большой проект — автоматический щит..

некорректный перевод из int в char

Очень тупой вопрос, но не могу нормальный результат получить. Нужно перевести числа из диапазона 10 .. 99 (числа хранятся в int ) в char . В итоге должна быть строка из чисел данного диапазона, которая потом будет записана в файл. Конструкции типа:

int a = 65; char ch = 65; 
int a = 65; char ch = (char)a; 

не работают (в строке — ASCII символы). Заранее спасибо.
Отслеживать
задан 29 ноя 2017 в 9:15
486 1 1 золотой знак 3 3 серебряных знака 16 16 бронзовых знаков

В смысле не работают? Перевод целого типа в другой целый тип — одно, а перевод любого целого типа в строку — совсем другое. Используйте sprintf() к примеру.

29 ноя 2017 в 9:25

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Раз вам нужно переводить многозначные числа, просто в char их не перевести, только в строку (массив char ).

Раз вы работаете в C, то просто выделяйте память под строку и используйте sprintf (или безопасные аналоги):

char s[20]; // Для двузначного хватит и s[3] - не забываем о нулевом символе sprintf(s,"%d",a); 

Вариант с itoa плох тем, что это — нестандартная функция.

Для конкретно двузначных чисел можно и свой код написать:

char s[3] = ; // Чтоб занулить завершающий символ s[0] = '0' + a/10; s[1] = '0' + a%10; 

Перевод из char в int c++

Мне нужно перевести цифру из char в int. То есть:
char a=’5′;
int b;
Как сделать чтобы этот int был равен пяти?

Лучший ответ
char *a=»5″;
int b;
sscanf( a, «%d», &b );
Или
b = a — ‘0’ если символы.
НиколайПросветленный (35604) 10 лет назад
про первый вариант не знал спасибо.
Остальные ответы

Запомните навсегда — во всех языках программирования приведение char к int дает вам ASCII код символа, а не переводит ‘1’ в 1

Для того чтобы получить не код символа а само число, можно использовать функцию atoi

char a = ‘5’;
int b = atoi(&a);

Это. по моему, наилучший способ, так как функция atoi является частью стандартной библиотеки Си

А вообще есть очень много вариантов, например от тех что написали другие участники, заканчивая банальный получением ASCII кода символа и с помощью циклов и операторов ветвления получить число

P.S перед конвертацией проверь, действительно ли в char цифры, иначе int будут присвоенные «левые» значения
Например:
int b;
char a;

if((a>=’0′)&&(a 10 лет назад

Помогите перевести char в int

В общем был недавно на олимпиаде. Нужно было чтоб все программы читали input.in и записывали результат в output.out. В input.in находится 5 чисел длиной до 2 символов (цифры типа integer). Считывается хорошо, все числа выводятся нормально :

#include #include using namespace std; int main() < ifstream input_file("[путь до]input.in") ; char one[2], two[2], three[2],four[2],five[2]; input_file >> one; input_file >> two; input_file >> three; input_file >> four; input_file >>five; cout

Но вот если хочу вести с ними какие то вычисления выскакивают непонятные значения, к примеру 174648468. Потом понял что char нужно перевести int. Пытался так :

int a; a = (int) one; 

Норм руководства по itoa всяким не нашёл, да и судя по отзывам на форумах оно то особо и не помогает.
Как перевести эти char’ы в int ? Или я с самого начала неправильно считываю.

Кажется стоит избавиться от [2 ] в char n ? Написал на андрюше прогу и в диагностике пишет что квадратные скобки нужны только для string.

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

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