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

Перевод байтов в число

07.07.2017, 13:32. Показов 6751. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Написал небольшую программу для связи с прибором через сом порт.
Прибор измеряет силу тока и передает данные через СОМ порт на ПК в формат IEE754 32bit. Значения занимает 4 последовательно расположенных байта (первые 3 это младший средний и старший байт мантиссы, четвертый это знак и порядок числа). Программа считывает все эти 4 байта в массив. Как вывести на экран (консоли) одно число уже в привычной форме (например 8.485 мА). Язык:с++, вижул студия.
В С++ новичок, прошу пожалуйста помочь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2017, 13:32
Ответы с готовыми решениями:

Перевод байтов в сетевой порядок и обратно
Вообщем нужно переводить массив байтов, сделал так : union bits { unsigned int number; ...

Перевод последовательности байтов в строку UTF-8
Получаю по сети строку в UTF-8 (то есть читаю из порта набор байт, содержащих сроку в формате...

Перевод массива символов в массив байтов
Допустим читаем из txt набор символов 4e5he56R8G потом превращаем его в байты, таким образом. Два...

Получить число из байтов
добрый день, получаю байты числа вот так: int number; int bytes; cin>>number;...

5
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
07.07.2017, 14:06 2
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main() {
    unsigned char bytes[]= {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7F, 0xC0};
    double n=*reinterpret_cast< double* >( bytes );
    cout<<n <<endl;
    return 0;
}
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
07.07.2017, 14:18 3
memcpy
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
07.07.2017, 14:22 4
Лучший ответ Сообщение было отмечено Михаил123454321 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main() {
    unsigned char bytes[]= {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7F, 0xC0};
    double n;
    memcpy(&n,&bytes, sizeof(bytes));
    cout<<n <<endl;
    return 0;
}
2
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
07.07.2017, 14:38 5
Михаил123454321, необходимо также учитывать порядок байт на Вашей машине и порядок в котором данные приходят.

Добавлено через 2 минуты
Peoples, float
1
0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 11
10.07.2017, 07:51  [ТС] 6
Большое спасибо!
0
10.07.2017, 07:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2017, 07:51
Помогаю со студенческими работами здесь

Прием по modbus. Как указать число считываемых байтов
Добрый день. Пишу программу для обмена по modbus'у rtu , я slave , принимаю команды и формирую...

Перевод байтов в число
Добрый день! Написал небольшую программу для связи с прибором через сом порт. Прибор измеряет...

Перевод байтов в килобайты
Здрасте, помогите пожалуйста написать программу в Visual Basic 2010 &quot; Дана величина А, выражающая...

Перевод байтов в килобайты
Помогите сделать задание: Составьте программу, которая выводит на экран таблицу перевода a, a+1,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru