Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разбор бинарных данных. Получение double
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
rcdimon
Всем привет.

Работаю с ГЛОНАСС-приемником по ком-порту. Он шлет бинарные пакеты определенной структуры. Я получаю эти пакеты в массив QByteArray. Я знаю, что, например, байты 4,5,6,7,8,9,10,11 хранят в себе данные типа double. Как мне эти 8 байт преобразовать в обычную double переменную? Потом эту переменную мне нужно будет вывести на экран в формате "31.12347"?
В добавок в документации к глонасс-приемнику видимо забыли указать little-endian или big-endian....

kuzulis
Цитата
Как мне эти 8 байт преобразовать в обычную double переменную?

QByteArray::toDouble(bool &ok) ?

Цитата
Потом эту переменную мне нужно будет вывести на экран в формате "31.12347"?

QString::number ( double n, char format = 'g', int precision = 6 )

PS: Мы не ассистенточитатели, да? Мы кодописатели?
rcdimon
QByteArray::toDouble(bool &ok) самоотверженно выдает 0...
kuzulis
Цитата(rcdimon @ 22.8.2011, 16:10) *
QByteArray::toDouble(bool &ok) самоотверженно выдает 0...

Значит пробовать как то так:
...
double val;
QByteArray ba = <>;

memcpy(&val, ba.constData(), 8);
...


А вообще:
Цитата
Я знаю, что, например, байты 4,5,6,7,8,9,10,11 хранят в себе данные типа double.

надо иметь описание на поля протокола!!!
Разбирайся сам.
MJIbIu
Цитата(rcdimon @ 22.8.2011, 14:44) *
Всем привет.

Работаю с ГЛОНАСС-приемником по ком-порту. Он шлет бинарные пакеты определенной структуры. Я получаю эти пакеты в массив QByteArray. Я знаю, что, например, байты 4,5,6,7,8,9,10,11 хранят в себе данные типа double. Как мне эти 8 байт преобразовать в обычную double переменную? Потом эту переменную мне нужно будет вывести на экран в формате "31.12347"?
В добавок в документации к глонасс-приемнику видимо забыли указать little-endian или big-endian....

если у тебя именно байты
4, 5, 6, 7, 8, 9, 10, 11
3 1 . 1 2 3 4 7
как вытащить почитай в документации, а вот если они лежат как то по другому тогда и надо искать в протоколе обмена
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2019 IPS, Inc.