c – Qt:将QString转换为十六进制

我知道这是一个非常基本的问题,但我是Qt的新手,我不知道这样做.我正在尝试将QString值(如“AA110011”)转换为十六进制.我想获得0xaa110011.我试过这段代码
QByteArray b = aString.toUtf8();

for (int i = 0; i < b.length(); i++ )
{
    if ( b[i] >= 65 && b[i] <= 70 )
    {
        b[i] = b[i] - 55;
    }
    else if (b[i] >= 48 && b[i] <= 57)
    {
        b[i] = b[i] - 48;
    }
}

我在Vairable“[0]”的内存中获得0a 0a 01 01 00 00 01 01的值,我不知道如何获得a 11 00 11.

你可以帮帮我吗?谢谢.

解决方法

尝试 QString::toInt,QString::toUInt,QString::toLong等,例如:
const QString str = Qlatin1String("AA110011");
bool ok;
const unsigned int parsedValue = str.toUInt(&ok,16);
if (!ok) {
    //Parsing Failed,handle error here
}

qDebug() << parsedValue;

第二个参数是基数,在这种情况下为16进行十六进制.

如果你的字符串适合无符号长整数或者更短,那么这个解决方案就可以工作 – 如果你想用这种方式转换任意长的字符串,它将无法工作.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...