LINUX.ORG.RU

Qt Hex


0

0

Что-то не могу элегантно сделать следующее... Есть QByteArray ba(«abcd»); Как наименшими усилиями привести Hex представление к текстовому виду. Что-то типа

for ( int i=0; i < ba.length(); i++) {
    ch = ba[i];
    str += ch.sprintf("%x");
}

ожидаемого результата не дает Подскажите плиз

★★★★★

Хотелось бы получить что что в духе
«61626364»

Jetty ★★★★★
() автор топика
Ответ на: комментарий от Begemoth

QByteArray ba(«abcd») -> QString str(«61626364»)

Jetty ★★★★★
() автор топика

Вроде так норма...

    QByteArray ba("abcd");
    QString str;
    
    for ( int i=0; i < ba.length(); i++)
        str += QString("%1").arg(ba.at(i), 0, 16);

    qDebug() << str;

Только напрягает то что компилятор матерится на неоднозначность функций....

Jetty ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

Вручную не тру. Если есть фреймворк, то надо всегда делать через него, а не изобретать велосипед.

dt1 ★★
()
Ответ на: комментарий от LamerOk

В конечном итоге сделал вручную :)

QString MainWindow::toHexFromQBAToQString(QByteArray buffer) {
    QString result("");
    char b[3]={0};
    for( int i=0; i < buffer.length(); i++) {
        if (i%4 == 0) result += " ";
        snprintf(b, 3, "%.2x", (buffer[i]&0xff));
        result.append(b[0]);
        result.append(b[1]);

    }
    return result;
}

Jetty ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А потом еще и 0x в начале удалить ? ):

Jetty ★★★★★
() автор топика
Ответ на: комментарий от Jetty

snprintf теперь называется «вручную»? Дожили...

((

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.