Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include "hexeditor.h"
  2.  
  3. HexEditor::HexEditor(QWidget *parent, QByteArray *bytes) :
  4.     QTableWidget((bytes->size() + 7) / 8, 13, parent)
  5. {
  6.     for (int i = 0; i < columnCount(); i++)
  7.         setColumnWidth(i, 21);
  8.     setColumnWidth(10, 35);
  9.     setColumnWidth(12, 35);
  10.  
  11.     QFont font("Courier", 8);
  12.  
  13.     QString dump1, dump2;
  14.     for (int i = 0, row = 0, column = 0; i < bytes->size(); i++, column++) {
  15.         uchar c = bytes->at(i);
  16.         char cr = c >= 33 && c <= 126 ? c : '.'; // unreadable chars => '.'
  17.  
  18.         if (column < 4)
  19.             dump1.append(cr);
  20.         else if (column == 4) {
  21.             column++; // skip column
  22.             dump2.append(cr);
  23.         }
  24.         else if (column > 4)
  25.             dump2.append(cr);
  26.  
  27.         QString hex = QString("%1").arg(c, 2, 16, QChar('0'));
  28.         QTableWidgetItem *item = new QTableWidgetItem(hex);
  29.         item->setFont(font);
  30.         setItem(row, column, item);
  31.  
  32.         if (i % 8 == 7 || i == bytes->size() - 1) {
  33.             QTableWidgetItem *item = new QTableWidgetItem(dump1);
  34.             item->setFont(font);
  35.             setItem(row, 10, item);
  36.             item = new QTableWidgetItem(dump2);
  37.             item->setFont(font);
  38.             setItem(row, 12, item);
  39.             dump1.clear();
  40.             dump2.clear();
  41.  
  42.             setRowHeight(row, 21);
  43.  
  44.             row++;
  45.             column = -1;
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement