Qt5中QTextStream输出显示问题

urniq 2015-08-17 07:58:04
下面是相关代码:
QTextStream m_standardOutput;
m_standardOutput(stdout);
char buff_j[2];
m_serialPort.read(buff_j,2);
m_standardOutput << QString::fromLocal8Bit("begin with_%1;%2\n").arg(buff_j[0]).arg(buff_j[1])<< endl;

buff_j里面是我从串口读上来的数据,我想用QTextStream显示出来,但是现在这样做,它把bujj里面的数据全部转换成Ascii码表示的字符显示出来了,我想要的是直接看到里面的十六进制数。

不知道讲的请不清楚,总之求大神帮忙!!
...全文
448 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
urniq 2015-08-20
  • 打赏
  • 举报
回复
引用 3 楼 qt_dog 的回复:
[quote=引用 2 楼 urniq 的回复:] [quote=引用 1 楼 qt_dog 的回复:] 不是很了解你的意图,如果只是想显示十六进制的数,可以把 m_standardOutput << QString::fromLocal8Bit("begin with_%1;%2\n").arg(buff_j[0]).arg(buff_j[1])<< endl; 改成 m_standardOutput << QString::("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16);
试过这样,会报错 error: C2666: “QString::arg”: 11 个重载有相似的转换 error: C2228: “.arg”的左边必须有类/结构/联合 我就是想不要当成ASCII码转换成字符显示,比如buff_j[0]是0x41,就输出41,但现在会输出A。[/quote] 不好意思,因为是直接在你的代码上改写的,有些细节改错了,应该是 m_standardOutput << QString("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16); 我试过了 是可以输出十六进制的 如果还是不行 加我qq 2873234622 [/quote] 谢谢,搞定了,要在arg里面把buff_j强制转换成int型,才能向上面一样输出16进制
qt_dog 2015-08-18
  • 打赏
  • 举报
回复
引用 2 楼 urniq 的回复:
[quote=引用 1 楼 qt_dog 的回复:] 不是很了解你的意图,如果只是想显示十六进制的数,可以把 m_standardOutput << QString::fromLocal8Bit("begin with_%1;%2\n").arg(buff_j[0]).arg(buff_j[1])<< endl; 改成 m_standardOutput << QString::("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16);
试过这样,会报错 error: C2666: “QString::arg”: 11 个重载有相似的转换 error: C2228: “.arg”的左边必须有类/结构/联合 我就是想不要当成ASCII码转换成字符显示,比如buff_j[0]是0x41,就输出41,但现在会输出A。[/quote] 不好意思,因为是直接在你的代码上改写的,有些细节改错了,应该是 m_standardOutput << QString("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16); 我试过了 是可以输出十六进制的 如果还是不行 加我qq 2873234622
urniq 2015-08-18
  • 打赏
  • 举报
回复
引用 1 楼 qt_dog 的回复:
不是很了解你的意图,如果只是想显示十六进制的数,可以把 m_standardOutput << QString::fromLocal8Bit("begin with_%1;%2\n").arg(buff_j[0]).arg(buff_j[1])<< endl; 改成 m_standardOutput << QString::("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16);
试过这样,会报错 error: C2666: “QString::arg”: 11 个重载有相似的转换 error: C2228: “.arg”的左边必须有类/结构/联合 我就是想不要当成ASCII码转换成字符显示,比如buff_j[0]是0x41,就输出41,但现在会输出A。
qt_dog 2015-08-17
  • 打赏
  • 举报
回复
不是很了解你的意图,如果只是想显示十六进制的数,可以把 m_standardOutput << QString::fromLocal8Bit("begin with_%1;%2\n").arg(buff_j[0]).arg(buff_j[1])<< endl; 改成 m_standardOutput << QString::("begin with_%1;%2\n").arg(buff_j[0],0,16).arg(buff_j[1],0,16);

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧