I am trying to display a number using QDebug in the Hex format. Below is the code which I have written. It is working but the output has string contents enclosed in double quotes:
How to remove these quotes?
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;
I did as per these resources:
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
You could format string first:
qDebug
is a debug interface. It's not meant for custom-formatted output, it's simply a way of quickly getting data in readable form. It's meant for a developer, and the quotes are there to remind you that you've output a string.qDebug()
presumes that theconst char*
data is a message and shows it without quotes, other string types likeQString
are "just data" and are shown with quotes.If you want custom formatting, don't use
qDebug()
, useQTextStream
:If one is not tied to use streaming operators, can go with the plain old
%x
and use qDebug with formatting string:which will yield "My hex number is: 56", without quotes.
May be a little late, but in case someone needs this:
As statet in the answere by Kuber Ober, Qt only removes the quotes if it's a
const char *
passed toqDebug
. However, Qt provides a macro to do the same with aQString
- TheqPrintable
macro:This way, you can use the
QString::number
function (as provided by TheDancinZerg) to format the string:Another way of doing this would be:
Hope this helps.
Edit: To remove the quotes you can cast the number as a pointer, as qt will format that without using quotes. For instance:
Slightly hackish, but it works.
Use
noquote()
. As in: