Название: QDataStream не читаются бинарные данные Отправлено: Bolonat от Сентябрь 26, 2017, 12:19 Всем привет!
Пытаюсь прочесть двоичный файл. Файл начинается со следующей последовательности байт: 68 D9 27 42 00 00 00 00 00 C3 47 42 EA 60 Пытаюсь прочесть два значения типа float: Код: QFile file("E:/1.bin"); Название: Re: QDataStream не читаются бинарные данные Отправлено: Bolonat от Сентябрь 26, 2017, 13:05 Разобралась. Надо вручную устанавливать точность. Если версия превосходит Qt 4.6, то точность по умолчанию - 64 бит. Т.е. Qt попытается прочитать float 32 как float 64.
Надо писать: Код: stream.setFloatingPointPrecision(QDataStream::SinglePrecision); ЗЫ. Если честно, меня Qt порой обескураживает... Зачем для типа данных, который имеет 32 бит по умолчанию считывать 64 бит? Видимо, я чего-то не понимаю... Название: Re: QDataStream не читаются бинарные данные Отправлено: __Heaven__ от Сентябрь 26, 2017, 16:11 Возможно, потому что стандарт гарантирует sizeof(float) <= sizeof(double), и сам размер типов не стандартизован ...
Название: Re: QDataStream не читаются бинарные данные Отправлено: __Heaven__ от Сентябрь 26, 2017, 16:27 Хотя, скорее всего это так сделано для обобщённого программирования
Код
Название: Re: QDataStream не читаются бинарные данные Отправлено: Bolonat от Сентябрь 26, 2017, 16:47 Да, пишут, что для платформенной независимости.
|