Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7

Получить int из char

14.01.2015, 12:38. Показов 1129. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Пишу программу в Visual Studio 2008. Проект Win32. Подскажите, имеется unsigned char p[] = {0x20, 0x00, 0xA3, 0x45, 0x89, 0x41 }; Как получить short int i из значений p[1] и p[2]. В данном случае i должно быть равно 163. Я сделал так: i=p[2]*256+p[1]; Мне кажется, что это примитивно. Может есть другие варианты? Потому что long long int таким методом не удобно получать. Цикл наверное тоже не красиво будет смотреться. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2015, 12:38
Ответы с готовыми решениями:

Реализация функции char *padl(const char *string, int len, int c=' ')
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Получить int hex число из char
Всем привет. Знаю, тема наверное заезженная, но не могу найти нужную информацию. Есть текстовый файл 16-ричными числами. Читаю этот файл в...

Форматирование строк, char to int & int to char
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

12
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2208 / 1413 / 411
Регистрация: 16.05.2013
Сообщений: 3,600
Записей в блоге: 6
14.01.2015, 12:53
C++ Скопировано
1
short * i = reinterpret_cast<short>(p);
Писал по памяти. Могу ошибиться с граматикой.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.01.2015, 13:03
А как 163 получилось, если 0xA3 умножили на 256?
0
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7
14.01.2015, 13:24  [ТС]
Точно! 0xA300. Sorry. Это я уже запарился..
0
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.01.2015, 13:32
Цитата Сообщение от Ilot Посмотреть сообщение
C++ Скопировано
1
short * i = reinterpret_cast<short>(p);
Писал по памяти. Могу ошибиться с граматикой.
Похоже * после short пропущена. Но это все равно не правильно (хотя пока не понятно, что ТСу надо, может именно это). На x86 используется little-endian порядок байт. А значит при желании получить p[0] << 8 | p[1] мы получим p[1] << 8 | p[0].
Цитата Сообщение от DrumAsm_ Посмотреть сообщение
Может есть другие варианты?
сдвигами, как выше показал.

Добавлено через 1 минуту
Цитата Сообщение от DrumAsm_ Посмотреть сообщение
Точно! 0xA300. Sorry
тогда вариант Ilot будет работать.
0
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7
14.01.2015, 13:53  [ТС]
C++ Скопировано
1
short * i = reinterpret_cast<short*>(p[1]);
Не получилось. Переменной i передается только один байт. А нужно p[1] и p[2].
0
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.01.2015, 14:00
Цитата Сообщение от DrumAsm_ Посмотреть сообщение
short * i = reinterpret_cast<short*>(p[1]);
вот так попробуй
C++ Скопировано
1
short * i = reinterpret_cast<short*>(&p[1]);
0
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7
14.01.2015, 14:24  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
вот так попробуй
C++ Скопировано
1
short * i = reinterpret_cast<short*>(&p[1]);
i присваивается адрес переменной.
0
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.01.2015, 14:35
Цитата Сообщение от DrumAsm_ Посмотреть сообщение
i присваивается адрес переменной.
ну да, так и задумано. Можно либо разыменовать указатель, либо сделать так
C++ Скопировано
1
short i = *(reinterpret_cast<short*>(&p[1]));
0
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7
14.01.2015, 15:21  [ТС]
Спасибо, получилось!))) Но читал, что reinterpret_cast не желательно использовать.. Наверное правильнее будет так:
C++ Скопировано
1
unsigned short* i = (unsigned short*)&p[1];
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.01.2015, 15:31
Такое считают ещё более нежелательным.
0
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.01.2015, 15:32
Цитата Сообщение от DrumAsm_ Посмотреть сообщение
Но читал, что reinterpret_cast не желательно использовать..
Его нежелательность основывается на том, что программист может натворить такого, чего вообще делать нельзя (С++ же все таки). Но если ты полностью понимаешь что и для чего ты делаешь, то можно использовать все, что хочешь.
0
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 7
14.01.2015, 16:32  [ТС]
Всем спасибо за помощь. Всё получилось. Кому тоже интересно, вот варианты:
C++ Скопировано
1
short * i = reinterpret_cast<short*>(&p[1]);
или
C++ Скопировано
1
unsigned short* i = (unsigned short*)&p[1];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2015, 16:32
Помогаю со студенческими работами здесь

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Как получить int представление char (русские символ cp1251)?
Как получить int представление char (русские символ cp1251)?

Подскажите пожалуйста с int main(int argc, char*argv[])
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc&gt;1 то программе передан хотя бы один аргумент,...

Сделать преобразование unsigned char в char, а затем типу int
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*)
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер