我有大量问题。我从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应该够了吗?! 有没有人有想法,哪里出错?
提前感谢!
答案 0 :(得分:0)
您需要将数据类型切换为quint64才能获得更大的最大大小2 ^ 32-1。它只给你一个额外的位,实际上看起来你可能很快会在某个时候增长,并且需要提出一个更有创意的解决方案,比如将来以KB或MB的形式存储你的大小。
答案 1 :(得分:0)
问题似乎出现在其他地方。提供的代码片段工作正常,QSettings
和QVariant
都不会截断长long值。