Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124372
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 284
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-16 11:37
个人简介

不是一个称职的程序员……

文章分类

全部博文(22)

文章存档

2014年(15)

2013年(7)

我的朋友

分类: C/C++

2014-01-02 16:32:17

背景介绍:

最近在做Qt串口相关PC机软件的开发。于是涉及到很多IO的操作,而IO的接收经常会存放在QByteArray里面。于是QByteArray和QString之间的转换就不可避免。

像这种转换,在网上已经很多了,这里我着重介绍我在实际应用中的两种方法,而且是转换为16进制数的方法。

QByteArray to QString 的第一种方法:

/**************************************************************************/

QByteArray byteArrayTempInfo;

* * * *

byteArrayTempInfo.toHex();

/**************************************************************************/
这种方法比较方便,将AByteArray中的数据一下子转换成了一个QString。


QByteArray to QString 的第二种方法:
/**************************************************************************/
QByteArray byteArrayTempInfo;
* * * *

unsigned char iTemp = byteArrayTempInfo.at(i);

QString str = QString::number(iTemp&0xff,16);

if(iTemp<10) str .insert(0,"0");  //注意

/**************************************************************************/
这种方法不如以第一种方法好用,要注意0xff的运用。同时有一个细节,要注意当有一些数据小于10的时候要补上0。

阅读(8024) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

nongxiaoming2014-02-14 12:49:58

不需要这么麻烦的,直接tr("0x%1").arg ((quint8)bytes.at(i),2,16,QLatin1Char('0'))就可以了,QString的arg很强大的,这里前面是要转换的字符,后面是转换的长度为2,第三个参数是转成16进制的意思,最后一个参数是长度不够填充的字符,我这里规定格式为0x00-0xff之间,小于16的自动前面补0,如果没有格式要求可以tr("0x%1").arg ((quint8)bytes.at(i),0,16)这样就可以。