Russian Qt Forum
Ноябрь 25, 2024, 15:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение бинарного байла и вывод его в шестнадцатиричном виде  (Прочитано 2453 раз)
XVilka
Гость
« : Май 27, 2010, 05:37 »

Доброе утро!
на Qt пишу впервые, поэтому прошу не кидать камнями.

задача проста - сделать вывод в одной из вкладок программы "сырого" файла в том виде, как все привыкли видеть в hex-редакторах.
Но у меня получился ужасно медленный и тупой код, да еще и с ошибками работающий...
Подскажите как сделать оптимально (П.С. в программе будут загружаться и большие файлы, как лучше их показывать?)
Спасибо!

Код:
void MainWindow::actionNew(const QString &path) {
    QString fileName = path;
    QString line;
    unsigned int offset = 0, i = 0;
    char *tmp = (char*)malloc(24);

    widget.textRAW->clear();
    widget.textSOURCE->clear();

    if (fileName.isNull())
        fileName = QFileDialog::getOpenFileName(this,
            tr("Open File"), "", "AllFiles (*.*)");

    if (!fileName.isEmpty()) {
        QFile file(fileName);
        if (file.open(QIODevice::ReadOnly)) {
            while (!file.atEnd()) {
                line.sprintf("0x%04x:%04x | ", offset >> 16, offset & 0x0000FFFF);
                widget.textRAW->insertHtml(line);
                file.read(tmp, 24);
                i = 0;
                while (i < 24) {
                  line.sprintf("%x%x ", tmp[i], tmp[i + 1]);
                  widget.textRAW->insertHtml(line);
                  i += 2;
                }
                line.sprintf(" | <br />");
                widget.textRAW->insertHtml(line);
                line.clear();
                offset += 24;
            }
      }
    }

    fileName.clear();
    free(tmp);
}
« Последнее редактирование: Май 27, 2010, 08:20 от XVilka » Записан
SimpleSunny
Гость
« Ответ #1 : Май 27, 2010, 11:41 »

Показ больших файлов уже обсуждался. http://www.prog.org.ru/topic_11267_0.html
Записан
XVilka
Гость
« Ответ #2 : Май 27, 2010, 17:40 »

Да, но там ни к какому конкретно решению так и не пришли...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 21.