@WayMax

Как преобразовать int в строку содержащую hex с разделителем байт?

Есть int 0102030F, как из него получить строку "0x01 0x02 0x03 0x0F" ?

Само преобразование через QString::number
чтобы "добить" впереди символами "0" через rightJustified(2, '0')
чтобы "F" была большой, а не маленькой через toUpper()
но чтобы пробелами разделять байты не могу найти (кроме варианта с тупым перебором строки в цикле посимвольно)
  • Вопрос задан
  • 722 просмотра
Пригласить эксперта
Ответы на вопрос 1
PavelK
@PavelK
Не знаю как Вы в int умудрились загнать hex с лидирующими нулями, скорее всего никак и зачем вообще такие извращения...
Вот регулярка в общем:
int  i = 16909071;
    QString s = QString::number(i, 16);
    qDebug()<<"Before"<<s;
    QRegularExpression reg("(^[1-9A-F][A-F]?|[0-9A-F]{2})"); //-- Учитываем, если нет лидирующего нуля в начале строки
    s = s.toUpper().replace(reg, "0x\\1  ").trimmed();
    qDebug()<<"After"<<s;


В ней учитывается отсутствие ведущего нуля, навсякий случай. Если всё таки он всегда будет, то регулярку можно упростить. Имхо, вам тут изначально нужен QByteArray, а не int, но не знаю Вашей задачи целиком, так ч тос смотрите сами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы