Перейти к содержимому

Как преобразовать char в int

  • автор:

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

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

Лучший ответ
char *a=»5″;
int b;
sscanf( a, «%d», &b );
Или
b = a — ‘0’ если символы.
НиколайПросветленный (35606) 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?

вкратце — я ввожу в консоль слово, после в цикле каждый символ слова преобразовывается в int и далее функция flood, которая эту букву печатает, но дело в том, что при преобразовании код числа меняется по неизвестной мне причине, то есть условно говоря вместо буквы a напечатается число 1, в чём проблема?

  • Вопрос задан более года назад
  • 131 просмотр

Комментировать
Решения вопроса 1
Wataru @wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.

Оно ожидает вот такие коды. И, если для заглавных английских букв оно еще совпадает с кодами ascii, то для строчных букв — нет.

Ответ написан более года назад
ch1ps01 @ch1ps01 Автор вопроса

я проверял этот вариант уже и вместо key вставлял десятичное число буквы, всё работало нормально, да и к тому же проблема с преобразованием в самом цикле, я в цикле перед вызовом функции flood выводил переменную key и код клавиши там был не тот, который должен был быть

Wataru @wataru Куратор тега C++
ch1ps01, и какой же код оно выводит? На какую букву? Перевод в int правильный.
ch1ps01 @ch1ps01 Автор вопроса
Wataru, ну на букву a к примеру выводит 97 — код единицы
Wataru @wataru Куратор тега C++

Потому что 97 и есть ascii код буквы ‘a’. У буквы ‘A’ код в char совпадает с vk кодом. Вам надо преобразовать строку в to_upper

Developing.ru

На Win32 тип int имеет размер 4 байта, а char — 1 байт. Таким образом «честное» преобразование int в char невозможно. Возможно лишь преобразование с усечением (truncation). Самое распространенное усечение — это отбрасование старших байт. Как это сделать продемонстировал IceFlame.

Entites should not be multiplied beyond necessity @ William Occam

Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)

Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
Спасибо за ответ!
eqltv Сообщения: 6 Зарегистрирован: 05 фев 2010, 14:22
IceFlame писал(а): Ну, например,

int a; char b; b = (char) a; 

Это язык си, а вопрос был про C++. В плюсах лучше писать так:

b = char(a); 

или еще лучше (понятнее)

b = static_cast(a); 

dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
спасибо, учту
BulldozerBSG Сообщения: 263 Зарегистрирован: 09 янв 2010, 04:14 Контактная информация:
eqltv писал(а): Это язык си, а вопрос был про C++. В плюсах лучше писать так:

b = char(a); 

или еще лучше (понятнее)

b = static_cast(a); 

А не одна ли малина, или компилятор код разный генерирует?

Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:

BulldozerBSG, ну если начинать говорить о С++ преобразованиях типов, то это целая отдельная и очень интересная тема со своей собственной философией. Можем обсудить все тонкости, если хочешь. или если кто-нибудь из посетителей хочет

Будет ли сгенерирован другой код? Для static_cast не будет. Однако static_cast более безопасен, так как помимо преобразования как такового, на этапе компиляции он дополнительно осуществляет валидацию правильности преобразования. Любой тип скастить в либой тип с помощью static_cast нельзя: в случае несоответствия будет выдана ошибка компиляции.

Entites should not be multiplied beyond necessity @ William Occam

Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)

Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

GeorgeSoca Сообщения: 0 Зарегистрирован: 12 окт 2015, 04:09 Откуда: Guam Контактная информация:

На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
virtual hosting

9 сообщений • Страница 1 из 1

  • Системное и прикладное программирование
  • ↳ Win API, Shell..
  • ↳ C и C++
  • ↳ Delphi и Pascal
  • ↳ Программирование на Pascal и Delphi (Object Pascal)
  • ↳ Все вопросы ООП
  • ↳ Компоненты в Delphi
  • ↳ Delphi и WinAPI, ActiveX и OLE , COM и DCOM, и т.д
  • ↳ Java
  • ↳ MS Office и VB(A).
  • ↳ Ассемблер
  • WEB программирование
  • ↳ JScript, VBScript, DHTML.
  • ↳ Perl, PHP, ASP .
  • Некатегоризированное
  • ↳ Вопрошайка
  • ↳ SQL
  • ↳ Алгоритмы
  • ↳ Дизайн и графика
  • Администрирование
  • ↳ Apache, IIS.
  • ↳ Операционные системы
  • Работа
  • ↳ Вакансии и заказы для программистов
  • ↳ Поиск работы и заказов.
  • ↳ Решите мне задачку
  • ↳ задачи на Паскале и Delphi
  • ↳ задачи на C и C++
  • ↳ задачи на Basic и Visual Basic (VB)
  • Прочее
  • ↳ Жалобная книга
  • ↳ Флейм.

Как преобразовать char* в __u32 и int.

Вообщем встала необходимость преобразовать строку в виде char *a в тип __u32, в виде 0x00000000. В данном случае необходимо преобразовать строку с ИПом. И в догонку, если есть что то типа char *a = , т.е. такая строка, то как его преобразовать в int.

Пы.Сы. На счёт последнего есть мысль, но это как сортировка пузырьком, т.е. в лоб, что не есть хорошо. А как сделать первое даже не знаю поскольку никогда не сталкивался.

Пы.Пы.Сы. просто это требуется для модуля в ядре, может в ядре есть что то для этого?

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

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