• 8449阅读
  • 9回复

[提问]QT4显示十六进制问题 [复制链接]

上一主题 下一主题
离线x_y_x
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-27
我想把读到的数据转换成十六进制显示在控件中,用QString类如何控制显示的位数?
比如用QString::number()只显示a,不能显示成0a
离线roywillow

只看该作者 1楼 发表于: 2011-12-27
QString::number()确实是显示为a而不是0a吧……
想更精确的控制请参考arg()
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ninsun

只看该作者 2楼 发表于: 2011-12-28
QByteArray有个这个方法……
QByteArray QByteArray::toHex ()
不知道是否能满足你的需求……
离线xiaowu311

只看该作者 3楼 发表于: 2011-12-28
QString str  = QString("Ox%1").arg(d,2,16);

d为你要测试的变量
离线x_y_x
只看该作者 4楼 发表于: 2011-12-28
回 3楼(xiaowu311) 的帖子
这个方法倒是可以显示两位,不过a前面不是0,而是个方框。。这是什么情况??
离线xiaowu311

只看该作者 5楼 发表于: 2011-12-28
#include <qapplication.h>
#include <iostream>

using namespace std;
int main(int argc,char * argv[])
{
    int a = 0;
    int b = 1;
    int c = 17;
    int d = 257;
//     const int MAX_HEX_LENGTH = 16;
//     char  Hexstr[MAX_HEX_LENGTH];
//     memset(Hexstr,0,MAX_HEX_LENGTH);
//     sprintf(Hexstr,"0x%02x",d);
    QString str  = QString("Ox%1").arg(d,2,16);
    cout<<str.upper().local8Bit().data()<<endl;
}


vc6 下代码
离线也无风雨
只看该作者 6楼 发表于: 2012-05-28
qt 中在文本编辑空间中显示十六进制的方法
http://www.wxdxh.net/disbbs/upload/forum.php?mod=viewthread&tid=184&fromuid=32
离线bluesky0318

只看该作者 7楼 发表于: 2016-07-20
这个方法倒是可以显示两位,不过a前面不是0,而是个方框。。这是什么情况??我也发现这个问题了
离线bluesky0318

只看该作者 8楼 发表于: 2016-07-20
QString("0x%1").arg(wdata,4,16,QLatin1Char('0'));,用填充的方式解决
离线bluesky0318

只看该作者 9楼 发表于: 2016-07-20
回 x_y_x 的帖子
x_y_x:这个方法倒是可以显示两位,不过a前面不是0,而是个方框。。这是什么情况?? (2011-12-28 17:16) 

QLatin1Char这个东西是关键
快速回复
限100 字节
 
上一个 下一个