我知道这是一个非常基本的问题,但我是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进行十六进制.
如果你的字符串适合无符号长整数或者更短,那么这个解决方案就可以工作 – 如果你想用这种方式转换任意长的字符串,它将无法工作.
原文地址:https://www.jb51.cc/c/111331.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。