Здравствуйте! Qt Creator 4.5.0 Qt 5.10.0
По модбасу получаю данные, формирую из них массив байт. Из этого массива последовательно выделяю подмассивы и читаю из них значения нужного мне типа, применяя QDataStream.
Не получается из QByteArray получить float.
Делаю следующее:
QByteArray ar4=one_ch.mid(64,4);
float r=0.0;
QDataStream stream4(ar4);
//поскольку байты местами менять не нужно, оставляю флаг по умолчанию - QDataStream::BigEndian
stream4.setFloatingPointPrecision(QDataStream::SinglePrecision);
stream4>>r;
Под отладчиком вижу элементы ar4:
ar4[0]=0x00
ar4[1]=0x00
ar4[2]=0x41
ar4[3]=0x20
Должно получиться 10.0 (По крайней мере, это значение отображается в Modbus Poll), но получаю всякую чушь.
Что я делаю не так?
Пробую тот же массив считать по-другому:
float v=0.0;
memcpy(&v, ar4.data(), sizeof(float));
или
float z = *(reinterpret_cast<const float*>(ar4.constData()));
и тоже в результате получаю ерунду.