Шестнадцатеричное значение дисплея Qdebug
Я пытаюсь отобразить число, используя QDebug в шестнадцатеричном формате. Ниже приведен код, который я написал. Он работает, но вывод имеет содержимое строки, заключенное в двойные кавычки:
Как удалить эти цитаты?
m_CanMsg_ptr->id = 0x720;
m_CanMsg_ptr->sizeData = 1;
m_CanMsg_ptr->data[0] = 0x05;
MessageID.setNum(m_CanMsg_ptr->id,16);
DataSize = QString("%1").arg(m_CanMsg_ptr->sizeData, 0, 16);
data = QString("%1").arg(m_CanMsg_ptr->data[0], 0, 16)
qDebug() << "Heart-Beat : Msg ID = " << MessageID << " Msg DLC = " << DataSize;
qDebug() << "Msg Data " << " = " << data;
Я сделал согласно этим ресурсы:
http://forum.qt.io/topic/5003/moved-how-to-display-a-local-variable-in-hex-when-debugging-a-qt-app/2 http://qt.shoutwiki.com/wiki/Convert_hexadecimal_to_decimal_and_vice-versa_in_Qt
9 ответов
qDebug
интерфейс отладки. Он не предназначен для пользовательского форматированного вывода, это просто способ быстрого получения данных в читаемой форме. Он предназначен для разработчика, и цитаты там, чтобы напомнить вам, что вы вывели строку. qDebug()
полагает, что const char*
данные-это сообщение и показывает его без кавычек, другие типы строк, такие как QString
являются "просто данные" и отображаются с кавычками.
если вы хотите пользовательское форматирование, не используйте qDebug()
используйте QTextStream
:
#include <QTextStream>
#include <cstdio>
QTextStream out(stdout);
void f() {
out << "Heart-Beat : Msg ID = " << MessageID << " Msg DLC = " << DataSize << endl;
}
вы можете сначала отформатировать строку:
int myValue = 0x1234;
QString valueInHex= QString("%1").arg(myValue , 0, 16);
qDebug() << "value = " << valueInHex;
другой способ сделать это было бы:
int value = 0xFFFF;
qDebug() << QString::number(value, 16);
надеюсь, что это помогает.
изменить: Чтобы удалить кавычки, вы можете использовать число в качестве указателя, так как qt будет форматировать его без использования кавычек. Например:
int value = 0xFFFF;
qDebug() << (void *) value;
немного hackish, но он работает.
Если один не привязан к использованию потоковых операторов, можно пойти с простым старым %x
и используйте qDebug со строкой форматирования:
int hexnum = 0x56;
qDebug("My hex number is: %x", hexnum);
что даст "мое шестнадцатеричное число: 56", без кавычек.
может быть немного поздно, но если кому-то нужен этот:
как statet в ответе Kuber Ober, Qt удаляет только кавычки, если это const char *
перешло к qDebug
. Однако Qt предоставляет макрос, чтобы сделать то же самое с QString
- в qPrintable
макро:
qDebug() << qPrintable(QString("String without quotes")) << QString("String with quotes");
таким образом, вы можете использовать QString::number
функция (как предусмотрено TheDancinZerg) для форматирования строки:
int value = 0xFFFF;
qDebug() << qPrintable(QString::number(value, 16));