Qt QML 杂记

Qt 字节数格式化

2017-05-10  本文已影响9人  赵者也

直接上代码:

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();
}

示例的显示结果:

显示结果
上一篇 下一篇

猜你喜欢

热点阅读