在编写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. 毫秒级时间戳实现:
#include <QDateTime>
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);
7. C++ 中 unsigned char 转 float
unsigned char c[4] = {*,*,*,*};
float test = *reinterpret_cast<float*>(&c);
printf("~~~~~~~ zzz ~~~~~~~~~~~ %f ^^^^^^^^^ \n",test);
8. 使用联合体 unsigned char 转 float
union data_ {
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);
9. C++ string 转QString
string c_str = “world”;
QString q_str = QString::fromStdString(c_str);
欢迎大家关注我的公众号: