crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Разбор бинарных данных. Получение double
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
MJIbIu Дата 23.8.2011, 14:03
 
Цитата(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
как вытащить почитай в документации, а вот если они лежат как то по другому тогда и надо искать в протоколе обмена
kuzulis Дата 22.8.2011, 15:29
 
Цитата(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.

надо иметь описание на поля протокола!!!
Разбирайся сам.
rcdimon Дата 22.8.2011, 15:10
  QByteArray::toDouble(bool &ok) самоотверженно выдает 0...
kuzulis Дата 22.8.2011, 14:03
 
Цитата
Как мне эти 8 байт преобразовать в обычную double переменную?

QByteArray::toDouble(bool &ok) ?

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

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

PS: Мы не ассистенточитатели, да? Мы кодописатели?
rcdimon Дата 22.8.2011, 13:44
  Всем привет.

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

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 21:03