首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qdebug显示十六进制值

Qdebug显示十六进制值
EN

Stack Overflow用户
提问于 2013-10-14 11:17:21
回答 10查看 53K关注 0票数 22

我正在尝试使用QDebug以十六进制格式显示一个数字。下面是我写的代码。它正在工作,但输出的字符串内容包含在双引号中:

如何删除这些引号?

代码语言:javascript
复制
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 Qt

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-10-14 11:23:40

qDebug是一个调试接口。它不是用于自定义格式的输出,它只是一种以可读形式快速获取数据的方法。它是针对开发人员的,引号是为了提醒您您已经输出了一个字符串。qDebug()假定const char*数据是一条消息,并显示它没有引号,其他字符串类型(如QString )“只是数据”,并以引号显示。

如果您想要自定义格式,不要使用qDebug(),使用QTextStream

代码语言:javascript
复制
#include <QTextStream>
#include <cstdio>

QTextStream out(stdout);

void f() {
   out << "Heart-Beat : Msg ID = " << MessageID << "  Msg DLC = " << DataSize << endl;
}
票数 7
EN

Stack Overflow用户

发布于 2017-11-22 13:39:48

解决办法很简单:

代码语言:javascript
复制
#include <QDebug>

int value = 0x12345;
qDebug() << "Value : " << hex << value;
票数 37
EN

Stack Overflow用户

发布于 2014-08-13 09:19:43

您可以先格式化字符串:

代码语言:javascript
复制
int myValue = 0x1234;
QString valueInHex= QString("%1").arg(myValue , 0, 16);
qDebug() << "value = " << valueInHex;
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19358967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档