Qt 5.4.1,Linux 64位。示例代码:
int main(int argc, char** argv)
{
QString a = "FFFFFFFFFFFFFFFF";
bool ok;
qDebug() << a.toLongLong(&ok, 16);
qDebug() << ok;
return 0;
}
应显示:
-1
true
但显示:
0
false
适用于较小的数字。 为什么这么奇怪?我做错了吗?
答案 0 :(得分:2)
实际上,可以处理long long的最大值是2^63 - 1
,因为它已签名。你在这里得到的是2^64 - 1
。这就是为什么它无法解析它。
您应该尝试使用QString::toULongLong
。
答案 1 :(得分:0)
如果你试试
a.toULongLong(&ok, 16);
然后结果是:
18446744073709551615
是真的