Russian Qt Forum
Августа 26, 2025, 05:38
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Чтение двоичного файла
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Чтение двоичного файла (Прочитано 5972 раз)
timur85
Гость
Чтение двоичного файла
«
:
Марта 29, 2007, 00:23 »
Столкнулся с проблемой. При чтении двоичного файла средствами
Qt возникает такая неприятная вещь:
При чтении из потока значений типа int(вообще считывается в динамический массив и он выводится), они "переворачиваются",
т.е. если было число,к примеру, 1200 (что в 16-ой системе 4B0),
считывается 180 (что в 16-ой системе 0B4), и так повсеместно :x
Может кто подскажет в чем проблема?
(использовал только средства Qt)
добавлено спустя 1 минуту:
Да такая же проблема насколько я слышал возникает и в Java
добавлено спустя:
Использовал Qt3)))
Записан
Sergeich
Гость
Чтение двоичного файла
«
Ответ #1 :
Марта 29, 2007, 02:47 »
1. Выясни в каком формате (BigEndian или LittleEndian) записаны int'ы в файле.
2. Либо юзай QDataStream::setByteOrder и читай каждый int по отдельности ( медленно ), либо зачитывай массив int'ов куском и пройдись по нему ntohl в цикле.
3. Enjoy
добавлено спустя 3 минуты:
P.S. По поводу порядка байтов можно прочитать например здесь:
http://ru.wikipedia.org/wiki/Big-endian
Записан
Alex03
Гость
Чтение двоичного файла
«
Ответ #2 :
Марта 29, 2007, 07:20 »
Ну и про 0x4B0 в 0x0B4 - это сказки, не верю.
В 0xB004 наполовину верю, но врядли у Вас инты 16разр.
Скорее 0xB0040000.
Записан
timur85
Гость
Чтение двоичного файла
«
Ответ #3 :
Марта 29, 2007, 12:22 »
Да, 16-разрядный. Извините за упрощение...
Записан
evilguard
Гость
Чтение двоичного файла
«
Ответ #4 :
Марта 29, 2007, 13:16 »
Sergeich А как массив int считывать используя QT?
Записан
timur85
Гость
Чтение двоичного файла
«
Ответ #5 :
Марта 29, 2007, 13:25 »
Прочитал статью с wiki.
Спасибо Sergeich
. Много разъяснило.
Но столкнулся с интересной фактом. Я попытался обойти проблему
используя стандартный C++(т.е. его средства
).
И он вывел все в правильном порядке (нужным мне).
Неужели это связано с внутренней реализацией Qt.
Записан
Sergeich
Гость
Чтение двоичного файла
«
Ответ #6 :
Марта 29, 2007, 14:52 »
Цитата: "evilguard"
Sergeich А как массив int считывать используя QT?
QDataStream::readBytes()
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...