转自:https://blog.csdn.net/qq_20553613/article/details/78774476
1.char* 转QString
方法一:直接用QString的构造函数转换,如下:
char* ch = "acuity"; QString str(ch);
方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16(),如下:
char* ch = "acuity"; QString str = Qstring::fromUtf8(ch);
2.QString 转char*
方法一:借助QByteArray类,也是本人用得最多的方法,如下:
Qstring str; char* ch; QByteArray ba = str.toLatin1(); ch=ba.data();
第三行一般加上,整合一条语句(ch=str.toLatin1().data())有时会出问题。以上对应英文/ASII码来说,如果涉及中文,建议通用用utf-8格式,可以避免莫名其妙的乱码现。这一点在代码编辑上建议也是使用utf-8格式。如下:
Qstring str; char* ch; QByteArray ba = str.toUtf8(); ch=ba.data();
方法二:
对于涉及中文情况,也可以先将QString转换为标准库string类型,然后再将string转换为char*。如下:
QString str; std::string str = filename.toStdString(); const char* ch = str.c_str();
QT中unsigned char转QString的方法
unsigned char是无符号字符,代表的范围为0-255,转QString要通过int来牵线,下面直接上代码与图:
QString uncharToQstring(unsigned char * id,int len) { QString temp,msg; int j = 0; while (j<len) { temp = QString("%1").arg((int)id[j], 2, 16, QLatin1Char('0')); msg.append(temp); j++; } return msg; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); unsigned char id[20] = { 0x0a, 0x10, 0xFF, 0x20, 0x30, 0x02, 0x40, 0x03, 0x50, 0x60, 0x5A, 0x30, 0x10, 0x1c, 0x10, 0x30, 0x40, 0x80, 0x40, 0x70 }; QString msg; msg = uncharToQstring(id,20); qDebug()<<msg; return a.exec(); }
结果:
QString unsigned char * 相互转换
Qt unsigned char *与QString之间的相互转换
//unsiged char *转QString unsigned char *str = "fdd" ; char *str1 = (char *)str; QString str2 = QString(QLatin1String(str1)); //QString 转化成char * QString str = "fdd"; QByteArray ba = str.toLatin1(); unsigned char * str1 = (unsigned char *)ba.data;