如何将字节格式化为千字节,兆字节,千兆字节?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

场景:各种文件的大小以字节形式存储在数据库中。将此大小信息格式化为千字节,兆字节和千兆字节的最佳方式是什么?例如,我有一个Ubuntu,显示为“5.2 MB(5445632字节)”的MP3。我该如何在网页上以“5.2 MB”的形式显示此内容,并且文件少于一兆字节显示为KB,并将一GB以上的文件显示为GB?

提问于
用户回答回答于
function formatBytes($bytes, $precision = 2) { 
    $units = array('B', 'KB', 'MB', 'GB', 'TB'); 

    $bytes = max($bytes, 0); 
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
    $pow = min($pow, count($units) - 1); 

    // Uncomment one of the following alternatives
    // $bytes /= pow(1024, $pow);
    // $bytes /= (1 << (10 * $pow)); 

    return round($bytes, $precision) . ' ' . $units[$pow]; 
} 
用户回答回答于

function formatBytes($size, $precision = 2)
{
    $base = log($size, 1024);
    $suffixes = array('', 'K', 'M', 'G', 'T');   

    return round(pow(1024, $base - floor($base)), $precision) .' '. $suffixes[floor($base)];
}

echo formatBytes(24962496);
// 23.81M

echo formatBytes(24962496, 0);
// 24M

echo formatBytes(24962496, 4);
// 23.8061M

扫码关注云+社区