ID=dateLine->text();//得到字符串
QString str = ID;
bool ok;
int hex = str.toInt(&ok, 16); // 将字符串变成16机制数
hex=hex+1;
QString t = QString::number(hex, 16).toUpper();将数字变成16机制数,并以大写显示
dateLine->setText(t);显示在textveiw() 里面
cout<< hex<<endl;
16进制转换。
这是一段非常经典的代码,主要用在字符串与 int 类型的转换。
实现功能:
1、将字符串按照16进制数,自增,只用修改 int hex = str.toInt(&ok, 10);
hex=hex+1;
2、将字符串按照10进制数,自增
int hex = str.toInt(&ok, 16);
hex=hex+1;
3、将字符串转成16进制数,然后以10进制数显示。
int hex = str.toInt(&ok, 16);
QString t = QString::number(hex, 10).toUpper();
4、将字符串转成10进制数,然后以16进制数显示
int hex = str.toInt(&ok, 10);
QString t = QString::number(hex, 16).toUpper();
原理:
int QString::toInt(bool * ok = 0, int base = 10) const
Returns the string converted(转换) to an int using base base, which is 10 by default and must be between 2 and 36(转换进制数,只能是2到36,二进制,10进制 ,9进制等都能够转换了), or 0. Returns 0 if the conversion fails.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
转换成功,返回值OK为1,返回 错误,则值为1.所以 还可以对OK值进行 利用判断,转换是否成功。
If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For locale dependent conversion use QLocale::toInt()
yearLine->setText((QString::number(CMD.trimmed().toInt(), 10)