Qt中 QString 和 int char char*等相互转换

297 阅读1分钟

在编写Qt程序过程中经常遇到各种数据类型的转换,故此写下来方便自己和大家的查找。叮!!!

1.QString to char* QString qstr = "hello";

char* c_char;

QByteArray qba = qstr.toLatin1();

c_char = qba.data();

使用c语言写的客户端,使用Qt写的服务器,还使用到了c 的fork()函数。

2.char* to QString char* c_char = "world";

 QString qstr = QString(QLatin1String(c_char));

 补充: 

        unsigned char chSerialNumber[16];

        invalid conversion from 'unsigned char*' to 'const char*'          

  QString::fromUtf8((char *)chSerialNumber)

3.int ,float ,double to QString ①正规

int num = 79;

float fnum = 79.99;

QString qnum = QString::number(num);  //默认为十进制转换,其他进制转换需显示指定

QString qnum = QString::number(fnum); 

QString qhex = QString::number(num,16).toUpper();  //十六进制大写  qhex = 4F

②奇淫巧技~ QString arg 的用法

 int num = 79;

 QString str = "hello world!";

 QString qstr = QString("%1%2").arg(num).arg(str);

4.QString to float double int QString qint = "100";

 QString qfloat = "100.0";

 int intNum = qint.toInt();

 float floatNum = qfloat.toFloat();

5.QString与QDateTime之间的转换 QString strtime;

QDateTime time;

time = QDateTime::currentDateTime();   //要包含头文件

strtime = time.toString("yyyy-MM-dd hh:mm:ss");

// strtime = "2019-05-16 19:54:17"

6. 毫秒级时间戳实现:


QDateTime t1 = QDateTime::currentDateTime();

// to time code

QDateTime t2 = QDateTime::currentDateTime();

QString log2 = QString("~~~~~~ Tmerstatus ~~~~~~  %1").arg(variable);
QByteArray b2 = log2.toLatin1();

LOG(char *log);
  1. C++ 中 unsigned char 转 float

float test = *reinterpret_cast<float*>(&c);

printf("~~~~~~~ zzz ~~~~~~~~~~~ %f ^^^^^^^^^ \n",test);

8.使用联合体  unsigned char 转 float

 float f;
 unsigned char uc[4];
 };
 
 data_ x_;
 x_.f = 3.1415926;
 unsigned char convertRet[4] = { 0 };
 
 for(int i=0; i<4; i++)
 memcpy(&(convertRet[i]), &x_.uc[i], 1);