欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

全能的字节单位转换函数

程序员文章站 2022-06-13 14:08:16
...
容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位




  1. class Util {
  2. /**
  3. * 容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位
  4. *
  5. * @param int $size,容量计数
  6. * @param type $unit,容量计数单位,默认为字节
  7. * @param type $decimals,小数点后保留的位数,默认保留一位
  8. * @param type $targetUnit,转换的目标单位,默认自动进位
  9. * @return type 返回符合要求的带单位结果
  10. */
  11. static function fileSizeConv($size, $unit = 'B', $decimals = 1, $targetUnit = 'auto') {
  12. $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
  13. $theUnit = array_search(strtoupper($unit), $units); //初始单位是哪个
  14. //判断是否自动计算,
  15. if ($targetUnit != 'auto')
  16. $targetUnit = array_search(strtoupper($targetUnit), $units);
  17. //循环计算
  18. while ($size >= 1024) {
  19. $size/=1024;
  20. $theUnit++;
  21. if ($theUnit == $targetUnit)//已符合给定则退出循环吧!
  22. break;
  23. }
  24. return sprintf("%1\$.{$decimals}f", $size) . $units[$theUnit];
  25. }
  26. }
复制代码



  1. echo Util::fileSizeConv(6461310554654);
  2. 结果:5.9TB
复制代码