Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Михаил123454321
0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 11
1

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

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

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

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

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

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

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

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

5
Peoples
1347 / 836 / 749
Регистрация: 06.02.2016
Сообщений: 2,233
Записей в блоге: 17
Завершенные тесты: 4
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
Croessmah
++Ͻ
14634 / 8381 / 1584
Регистрация: 27.09.2012
Сообщений: 20,602
Записей в блоге: 2
Завершенные тесты: 1
07.07.2017, 14:18 3
memcpy
0
Peoples
1347 / 836 / 749
Регистрация: 06.02.2016
Сообщений: 2,233
Записей в блоге: 17
Завершенные тесты: 4
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
Croessmah
++Ͻ
14634 / 8381 / 1584
Регистрация: 27.09.2012
Сообщений: 20,602
Записей в блоге: 2
Завершенные тесты: 1
07.07.2017, 14:38 5
Михаил123454321, необходимо также учитывать порядок байт на Вашей машине и порядок в котором данные приходят.

Добавлено через 2 минуты
Peoples, float
1
Михаил123454321
0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 11
10.07.2017, 07:51  [ТС] 6
Большое спасибо!
0
10.07.2017, 07:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2017, 07:51

Перевод из строки в число
Снова я =) Работаю над калькулятором. С функцией ввода разобрался. Значит есть...

Перевод строки в число
Задание таково: нужно создать функцию, которая переводит строку из чисел типа...

Перевод из строки в число
Подскажите в чем ошибка. Метод должен принимать строку в виде $456 654 456.36 ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru