diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp index 5242702709a8bebb4822c759082df9d587724280..cc82aac138a54198213a33aa3e8d18254b0d148b 100644 --- a/src/plugins/bineditor/bineditor.cpp +++ b/src/plugins/bineditor/bineditor.cpp @@ -1121,10 +1121,19 @@ void BinEditor::zoomOut(int range) void BinEditor::copy() { - int selStart = qMin(m_cursorPosition, m_anchorPosition); - int selEnd = qMax(m_cursorPosition, m_anchorPosition); - if (selStart < selEnd) - QApplication::clipboard()->setText(QString::fromLatin1(dataMid(selStart, selEnd - selStart))); + const int selStart = selectionStart(); + const int selEnd = selectionEnd(); + if (selStart < selEnd) { + const QByteArray &data = dataMid(selStart, selEnd - selStart); + QString hexString; + const char * const hex = "0123456789abcdef"; + for (int i = 0; i < data.size(); ++i) { + const uchar val = static_cast<uchar>(data[i]); + hexString.append(hex[val >> 4]).append(hex[val & 0xf]).append(' '); + } + hexString.chop(1); + QApplication::clipboard()->setText(hexString); + } } void BinEditor::highlightSearchResults(const QByteArray &pattern, QTextDocument::FindFlags findFlags)