Qt中的数据类型转换总结

文章内容: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,第二个参数是转换类型,见下边倒数第二个重构函数,最后一个参数是精确位数。

QString number的重构函数(摘自Qt助手)

3、QString——QByteArray

在UART通讯时传输的数据类型要求时QByteArray,得到的QString或者int等类型需要转换成QByteArray,其实很简单,直接。

QString test;

test.toLatin1();    

test.toLocal8Bit;   

test.toUtf8();        //根据需求选择就可以了。

其他数据类型想转QByteArray可以先转成QString再转到QByteArray。

直接让字符串调用其类里的函数(摘自Qt助手)


同上

那QString怎转成别的?

很简单直接.to就提醒了。

.摘自Qt助手

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容