Перевод из 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.
Пы.Сы. На счёт последнего есть мысль, но это как сортировка пузырьком, т.е. в лоб, что не есть хорошо. А как сделать первое даже не знаю поскольку никогда не сталкивался.
Пы.Пы.Сы. просто это требуется для модуля в ядре, может в ядре есть что то для этого?