方法搬自博客: Qt數據類型轉換 侵刪html
1. 把QString轉換爲double類型函數
//法一: QString str="123.45"; double val=str.toDouble(); //val=123.45 //法2: 很適合科學計數法形式轉換 bool ok; double d; d=QString("1234.56e-02").toDouble(&ok); //ok=true;d=12.3456.
2. 把QString轉換爲float形post
法1: QString str="123.45"; float d=str.toFloat(); //d=123.45 法2: QString str="R2D2"; bool ok; float d=str.toFloat(&ok); //轉換是被時返回0.0,ok=false;
3. 把QString形轉換爲整形
1.轉換爲十進制整形
注意:基數默認爲10。當基數爲10時,而且基數必須在2到36之間。若是基數爲0,若字符串是以0x開頭的就會轉換爲16進制,若以0開頭就轉換爲八進制,不然就轉換爲十進制。url
Qstring str="FF"; bool ok; int dec=str.toInt(&ok,10); //dec=255 ; ok=rue int hex =str.toInt(&ok,16); //hex=255;ok=true;
long a =63; QString str=QString::number(a,16); //str="3f"; QString str=QString::number(a,16).toUpper(); //str="3F";
//方法一: QString qstr("hello,word"); const char * p = qstr.toLocal8Bit().data(); //方法二: const char *p = qstr.toStdString().data();
public QDateTime qdate = QDateTime.currentDateTime(); datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
//若是不是QTime和QDate類好比說:經過TCP/IP接收到的char unsigned char 類等如何轉換爲QString類 QString Time2String( DWORD dwTime) { char cTime[50] = {0}; memset(cTime,0,50); strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime))); return QString(cTime); }
QString str1 = "Test"; QByteArray ba = str1.toLatin1(); const char *c_str2 = ba.data(); printf("str2: %s", c_str2);
char port[10]="COM3"; QString szPort =QString(port);
int index=1; QString szId =QString::number(index); //或者能夠使用setNum函數. QString str; str.setNum(1243); //str=="1234"
float fSpeed =3.2; QString szSpeed =QString::number(fSpeed,'f',2 );//szSpeed的內容爲"3.20"
//此處注意一下這個函數: QString QString::number ( double n, char f = 'g', int prec = 6 ) [靜態] 這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。 根據fmt指定的格式,參數n被格式化,g爲默認狀況而且能夠爲下列之一: e - 格式化爲[-]9.9e[+|-]999 E - 格式化爲[-]9.9E[+|-]999 f - 格式化爲[-]9.9 g - 使用e或f格式,看哪個更簡練 G - 使用E或f格式,看哪個更簡練 在全部的狀況下,小數點以後數字的個數等於prec指定的精度。
則double科學計數法轉QString能夠使用number或setNum. 這兩個函數使用方法不同spa
QString str; str.setNum(111.111, 'E', 2); //或使用number QString str = QString::number(111.111, 'E', 2);
11. 多個變量 到 QString:code
char port[10]="COM2"; intbaudrate =9600; QString szFailed =QString("Open %1 baudrate %2 failed!").arg(port).arg(baudrate);
12. 中文 到 QString:htm
QString szOpened =QString::fromLoacal8Bit("打開串口");
13. 中文和變量組合 到 QString:blog
char port[10]="COM2"; intbaudrate =9600; QString szFailed =QString::fromLoacal8Bit("打開串口%1, 波特率%2").arg(port).arg(baudrate);
14. char * 與 const char *的轉換ci
char *ch1="hello11"; const char *ch2="hello22"; ch2 = ch1;//不報錯,但有警告 ch1 = (char *)ch2;
15. char 轉換爲 QString字符串
char a='b'; QString str; str=QString(a);
16. QString 轉換爲 char
QString str="abc"; char *ch; ch = str.toLatin1.data();
17. QByteArray 轉換爲 char *
char *ch;//不要定義成ch[n]; QByteArray byte; ch = byte.data();
18. char * 轉換爲 QByteArray
char *ch; QByteArray byte; byte = QByteArray(ch);
19. QString 轉換爲 QByteArray
QByteArray byte; QString string; byte = string.toAscii();
20. QByteArray 轉換爲 QString
QByteArray byte; QString string; string = QString(byte);
21. int 轉 QString
int a=10; QString b; b=QString::number(a)
22. QString 轉int
QString a="120" int b; b=a.toInt()