Qt比较两个版本号大小
版本号示例:
- V1.0.2
- V1.0.3
计算过程代码
bool compareVersion(QString ver1, QString ver2)
{
QStringList list1 = ver1.replace(QRegExp("[a-zA-Z() ]"), "").split(".");
QStringList list2 = ver2.replace(QRegExp("[a-zA-Z() ]"), "").split(".");
if (list1.size() == 3 && list2.size() == 3) {
qint32 ver1 = (list1.at(0).toInt() << 16) | (list1.at(1).toInt() << 8) | list1.at(2).toInt();
qint32 ver2 = (list2.at(0).toInt() << 16) | (list2.at(1).toInt() << 8) | list2.at(2).toInt();
return ver2 > ver1;
}
return false;
}
运算过程详解:
通过正则去掉版本号中的字母、扣号以及空格等
再通过或运算得出大小
V1.0.2 > 1.0.2 >> 1 Lsh 16 OR 0 Lsh 8 OR 2 = 65538
V1.0.3 > 1.0.3 >> 1 Lsh 16 OR 0 Lsh 8 OR 3 = 65539
return 65539 > 65538;