Qt 字节数格式化

直接上代码:

QString GetFileSize(qint64 size){
    if (!size) {
        return "0 Bytes";
    }
    static QStringList SizeNames;
    if(SizeNames.empty()){
        SizeNames << " Bytes" << " KB" << " MB"
                  << " GB" << " TB" << " PB" << " EB" << " ZB" << " YB";
    }
    int i = qFloor(qLn(size) / qLn(1024));
    return QString::number(size*1.0/qPow(1024, qFloor(i)),
                           'f', (i > 1) ? 2 : 0 ) + SizeNames.at(i);
}

上述代码需要引入 Qt 类文件:

#include <QStringList>
#include <QtMath>

测试程序的代码:

#include <QCoreApplication>
#include <QStringList>
#include <QtMath>

#include <QDebug>

QString GetFileSize(qint64 size){
    if (!size) {
        return "0 Bytes";
    }
    static QStringList SizeNames;
    if(SizeNames.empty()){
        SizeNames << " Bytes" << " KB" << " MB"
                  << " GB" << " TB" << " PB" << " EB" << " ZB" << " YB";
    }
    int i = qFloor(qLn(size) / qLn(1024));
    return QString::number(size*1.0/qPow(1024, qFloor(i)),
                           'f', (i > 1) ? 2 : 0 ) + SizeNames.at(i);
}

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

    qDebug() << "Test size 800000000 byte is "
             << GetFileSize(800000000);

    return a.exec();
}

示例的显示结果:

显示结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容