diff --git a/include/of_util.h b/include/of_util.h index c7f454a..e0b145e 100644 --- a/include/of_util.h +++ b/include/of_util.h @@ -46,6 +46,7 @@ public: public: static ofString now_time(); + static ofString get_file_size(long long bytes); }; class CMutBuffer diff --git a/src/of_util.cpp b/src/of_util.cpp index 9a7eeaf..2f59154 100644 --- a/src/of_util.cpp +++ b/src/of_util.cpp @@ -85,6 +85,32 @@ ofString OfUtil::now_time() #endif } +ofString OfUtil::get_file_size(long long bytes) +{ + constexpr long long gbblk = 1024 * 1024 * 1024; + constexpr long long mbblk = 1024 * 1024; + + long long gb = bytes / gbblk; + bytes %= gbblk; + + long long mb = bytes / mbblk; + bytes %= mbblk; + + long long kb = bytes / 1024; + + std::ostringstream oss; + if (gb > 0) { + oss << gb << ofT("GB"); + } + if (mb > 0 || gb > 0) { + oss << mb << ofT("MB"); + } + if (kb > 0 || mb > 0 || gb > 0) { + oss << kb << ofT("KB"); + } + return oss.str(); +} + #ifdef _WIN32 std::string CCodec::u8ToGBK(const std::string& str) {