qt 的QString中16进制转10进制问题

qt的QString中16进制转10进制问题boolok;QStringstr="00011ca6";intresult=str.toInt(&ok,16);result... qt 的QString中16进制转10进制问题bool ok;
QString str="00011ca6";
int result=str.toInt(&ok,16);
result结果为72870;ok返回true

但是,
bool ok1;
QString str1="fffec4bf";//转为10进制应该为-80705
int result1=str1.toInt(&ok1,16);
result1结果却为0;ok1返回flase

也就是说表示负数时,就不能转换成功,请问各位高手这是为啥?怎么解决?
展开
 我来答
匿名用户
2017-01-27
展开全部
这是qt的遗留问题,参考QTBUG-1098
你只能用其他方法。
更多追问追答
追问
谢谢!那就不能用这个方法转了么?请问您知道用其他什么方法么?很困扰我。
追答

方法很多啊,直接拷贝内存,或者用QDataStream,代码:

#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>
#include <QDataStream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString s("fffec4bf");

    QByteArray bytes = QByteArray::fromHex("fffec4bf");

    QDataStream stream(&bytes, QIODevice::ReadOnly);
    // 注意字节大端小端
    stream.setByteOrder(QDataStream::BigEndian);

    int i;
    stream >> i;

    qDebug() << i;
//    int i;
//    int j = -80705;
//    memcpy(&i, bytes.constData(), sizeof(i));


    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式