Название: QTcpSocket и QDataStream помогите сериализовать Отправлено: User162 от Апрель 04, 2013, 15:00 Всем привет!
Есть прога, которая шлёт данные по сети. Прогу, сразу скажу, писал не я. Моя задача принять эти данные и распарсить их. Все что мне известно это структура данных, сама посылка. Структура данных такова: Код: struct values Каждое значение - 4 байта. Там и дробные и отрицательные числа. Вот фрагмент посылки: Код: Data= "5000000031743c426a17353f04000000f2ffffff" Можно попробовать разбирать полученный массив на байты. Но нет ли более изящного варианта. Да, кстати там используется обратный порядок байт. Код: void MainWindow::slotReadClient() Название: Re: QTcpSocket и QDataStream помогите сериализовать Отправлено: Bepec от Апрель 04, 2013, 15:22 Эмм... а что мешает тупо наложить структуру на байты? reinterpret_cast'ом?
Название: Re: QTcpSocket и QDataStream помогите сериализовать Отправлено: User162 от Апрель 04, 2013, 15:24 А мне бы примерчик, как это сделать)))...если можно
Название: Re: QTcpSocket и QDataStream помогите сериализовать Отправлено: RedDog от Апрель 04, 2013, 15:59 Эмм... а что мешает тупо наложить структуру на байты? reinterpret_cast'ом? А если она на той стороне выровнена как нидь хитро?Название: Re: QTcpSocket и QDataStream помогите сериализовать Отправлено: Bepec от Апрель 04, 2013, 16:44 А это уже надо смотреть и ровнять :D Как грится надо надеяться и верить :D
Код: values * struct; Ну как то так :D Название: Re: QTcpSocket и QDataStream помогите сериализовать Отправлено: Странник от Апрель 06, 2013, 23:39 нет, нет и еще раз нет. лучше сериализовать и десериализовать полями. особенно, если порядок байт отличается от порядка байт на вашей платформе.
для объявления четырехбайтного целого лучше использовать предопределенный тип qint32, чтобы гарантировать длину на любой из целевых платформ. установка QDataStream порядка байт LittleEndian не имеет смысла, если вы не читаете многобайтные типы данных, так что читайте из устройства полями. |