文章目录
前言
本文主要记录QT中常用数据类型转换。
持续更新...
一、num转QString
int num = 123456;
double num_f = 12.3456789;
QString num_string = QString::number(num);
QString num_f_string = QString::number(num_f,'f',7);//显示7位小数,不添加7时默认显示6位小数
转换后:
num_string = “123456”;
num_f_string =“12.3456789”;
二、数据输出格式
int num = 123456;
qDebug()<<"dec output:"<<QString().sprintf("%d",num);//十进制
qDebug()<<"hex output:"<<QString().sprintf("%x",num);//十六进制小写
qDebug()<<"HEX output:"<<QString().sprintf("%X",num);//十六进制大写
输出:
dec output: 123456
hex output: 1e240
HEX output:1E240
三、QString拆分到QStringList
1.去除空格拆分
QString read_data_string;
QStringList read_data_stringlist;
read_data_stringlist = read_data_string.split(" ");
read_data_string = “12 34 56 78 90”;
拆分后:
read_data_stringlist.at(0) = 12;
read_data_stringlist.at(1) = 34;
read_data_stringlist.at(2) = 56;
read_data_stringlist.at(3) = 78;
read_data_stringlist.at(4) = 90;
2.按固定长度拆分
QString num_string = "123456";
QStringList num_stringList;
while (num_string.length()) {
num_stringList.append(num_string.mid(0,2));//从第0个字符开始,拆分长度为2
num_string.remove(0,2);
}
拆分后:
num_stringList.at(0) = “12”;
num_stringList.at(0) = “34”;
num_stringList.at(0) = “56”;
四、QStringList转QByteArray(HEX)
QStringList read_data_stringlist;
QByteArray read_data;
for (quint16 i=0; i<read_data_stringlist.length(); i++) {
read_data[i] = read_data_stringlist.at(i).toInt(nullptr, 16);
}
五、uint8_t与QByteArray互转
1.uint8_t转QByteArray
uint8_t data[8] = {1,2,3,4,105,206,117,118};
QByteArray b_data((const char *)&data,8);
2.QByteArray转uint8_t
QByteArray ba("abcd");
char *pData = ba.data();
六、QByteArray显示为HEX并插入空格
QByteArray arr;
arr.append(0x01);
arr.append(0x02);
arr.append(0x03);
arr.append(0x04);
qDebug() << arr.toHex(' ').toUpper();