![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
x-8973 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 25 Регистрация: 22.2.2013 Пользователь №: 3720 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброго здравия всем.
Задача: прочитать из бинарного файла последовательность байт и распихать ее в поля структуры. Проблема: определил структуру как тип, описал переменную этого типа. Чтение из файла проходит нормально, в переменной типа QByteArray лежат считанные байты. Пытаюсь "наложить" адрес переменной-структуры на адрес переменной-массива: Widget.h
Сам код:
В результате на входе (в переменной-массиве) считанные данные появляются, а в переменной-структуре - каша. Что не так? Может, я что-то упустил? |
|
|
![]() |
ilyabvt |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
Размер структуры не обязательно равен сумме размеров всех полей. Компилятор может выравнивать поля.
Можно отключить выравнивание в компиляторе или использовать нестандартные ключевые слова типа "packed". Можно писать в файл именно структуру, но есть нюанс: если скомпилировать 2 экземпляра приложения (сплошь и рядом в опенсорсе), с выравниванием и без него, то файлы будут бинарно несовместимы. Можно читать отдельно по полям. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.6.2025, 5:46 |