我知道这是一个非常基本的问题,但我是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。
你可以帮帮我吗?感谢。答案 0 :(得分:6)
尝试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进行十六进制。
如果您的字符串符合无符号长整数或更短,则此解决方案将起作用 - 如果您想以这种方式转换任意长字符串,它将无效。
答案 1 :(得分:2)
答案 2 :(得分:1)
只需使用它,以后再感谢我。
QString prgName = query.value(1).toString();
prgName.toLatin1().toHex();
答案 3 :(得分:0)
QByteArray a = QByteArray::fromHex(s.toLatin1())
qDebug() << a;