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

示例的顯示結果:

顯示結果
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容