Qt数据类型错误与大数字

时间:2013-10-24 10:23:23

标签: qt numbers

我有大量问题。我从QSettings中检索一个数字。

settings.beginGroup( "filesizes" );
this->fileSize = settings.value( 309355 ).toLongLong();
qDebug() << __FILE__ << ":" << __LINE__ << std::numeric_limits<qlonglong>::max();              
qDebug() << __FILE__ << ":" << __LINE__ << "this->filesize: " << this->fileSize;
qDebug() << "loaded filesize" << this->fileSize;

存储在设置中的数字是12062891612(~11,x GB,以字节为单位)。第四行给我回复“-822010276”,我不明白为什么。 this-&gt; fileSize是qint64。我减少了设置中的数量,只要它小于2147483647(2 ^ 31-1)一切都没问题,但上面我得到负数。我不明白,因为longlong和qint64应该够了吗?! 有没有人有想法,哪里出错?

提前感谢!

2 个答案:

答案 0 :(得分:0)

您需要将数据类型切换为quint64才能获得更大的最大大小2 ^ 32-1。它只给你一个额外的位,实际上看起来你可能很快会在某个时候增长,并且需要提出一个更有创意的解决方案,比如将来以KB或MB的形式存储你的大小。

答案 1 :(得分:0)

问题似乎出现在其他地方。提供的代码片段工作正常,QSettingsQVariant都不会截断长long值。