diff --git a/gui/qt/utils.cpp b/gui/qt/utils.cpp index 4ad73a05..ebd40cc8 100644 --- a/gui/qt/utils.cpp +++ b/gui/qt/utils.cpp @@ -71,17 +71,23 @@ QString resolveAddressOrEquate(const QString &input, bool *ok) { } QString s = in; - if (s.startsWith(QStringLiteral("0X"))) { - s = s.mid(2); + if (s.startsWith('$')) { + s.remove(0, 1); + } else if (s.startsWith(QStringLiteral("0X"))) { + s.remove(0, 2); + } else if (s.endsWith('H')) { + s.chop(1); } - if (s.isEmpty() || s.length() > 6) { + if (s.isEmpty() || s.toStdString().find_first_not_of("0123456789ABCDEF") != std::string::npos) { return {}; } - if (s.toStdString().find_first_not_of("0123456789ABCDEF") != std::string::npos) { + + bool valid = false; + const uint32_t value = s.toUInt(&valid, 16); + if (!valid || value > 0xFFFFFF) { return {}; } - const auto value = static_cast(hex2int(in)); if (ok) { *ok = true; } return int2hex(value, 6); }