龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

全能的字节单位转换函数

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位
容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位
class Util {

    /**
     * 容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位
     * 
     * @param int $size,容量计数
     * @param type $unit,容量计数单位,默认为字节
     * @param type $decimals,小数点后保留的位数,默认保留一位
     * @param type $targetUnit,转换的目标单位,默认自动进位
     * @return type 返回符合要求的带单位结果
     */
    static function fileSizeConv($size, $unit = 'B', $decimals = 1, $targetUnit = 'auto') {
        $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
        $theUnit = array_search(strtoupper($unit), $units); //初始单位是哪个
        //判断是否自动计算,
        if ($targetUnit != 'auto')
            $targetUnit = array_search(strtoupper($targetUnit), $units);
        //循环计算
        while ($size >= 1024) {
            $size/=1024;
            $theUnit++;
            if ($theUnit == $targetUnit)//已符合给定则退出循环吧!
                break;
        }
        return sprintf("%1\$.{$decimals}f", $size) . $units[$theUnit];
    }

}

2. [代码]使用方法及返回结果     跳至 [1] [2] [全屏预览]

echo Util::fileSizeConv(6461310554654);

结果:5.9TB
精彩图集

赞助商链接