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
也就是说表示负数时,就不能转换成功,请问各位高手这是为啥?怎么解决? 展开
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
也就是说表示负数时,就不能转换成功,请问各位高手这是为啥?怎么解决? 展开
1个回答
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询