文章内容:QString——int、QString——float/double、QString——QByteArry、16进制——int——QString——float这些格式之间的相互转换以及16进制自动补零、保留指定位数的小数、科学计数法。
QString number()函数可以将int、float、double等常见数据转换成QString。具体操作如下:
首先有些可以直接强制转换,比如float a; int b=(int)a; 强制转换下但可能会造成损失,不能强制转换的可以参照下边内容。
1、int ~~> QString
int a=2;
QString::number(a,10);
//即可把a转换成QString
QString::number(a); //等价于上边,默认都是按照10进制转换(可以参照下边的重构函数)
2、float/double ~~> QString
float a=1.234;
QString::number(a,‘f’, 2);
//得到1.23,第二个参数是转换类型,见下边倒数第二个重构函数,最后一个参数是精确位数。
3、QString——QByteArray
在UART通讯时传输的数据类型要求时QByteArray,得到的QString或者int等类型需要转换成QByteArray,其实很简单,直接。
QString test;
test.toLatin1();
test.toLocal8Bit;
test.toUtf8(); //根据需求选择就可以了。
其他数据类型想转QByteArray可以先转成QString再转到QByteArray。
那QString怎转成别的?
很简单直接.to就提醒了。
4、16进制——int——QString——float
int a=255;
QString res=QString::number(a,16);
输出: res=ff
将格式该为16后得到的就是"ff"16进制的字符串类型。
反过来如果要一个"ff"的16进制字符串转换成10进制整数
参照上图中的QString.toInt(bool *ok=nullptr, base =10)函数,将base该为16即可。如
QString num = "FF"; //想要得到255
bool ok;
QString res=num.toInt(&ok,16); //return255 (int) 将字符串代表的16进制数转换成10进制
输出:res=255
如果 num.toInt(&ok,10); 这样,返回的则是0!
由16进制转换成其他类型只需要用QString过度一下就可以了
5、16进制自动补零
int k=16;
QString key = QString("%1").arg(k,4,16,QLatin1Char('0'));
输出:key=000f
在组帧的时候会用到这种操作。让每个数据占用固定的字节。
//k为int型或char型都可,得到的 key 为 000f。
6、保留指定小数位数与科学计数法
float b=0.0001;
QString res= QString::number(b, 'e', 2);
结果:res=1.0e-4
float b=1.123;
QString res=QString::number(b, 'f', 2);
结果:res=1.12