本文概述
- A.基于1024字节的简短版本
- B.基于1000字节的版本
这就是为什么你需要使用已知的KB, MB, GB等度量符号以特定的符号显示此信息的原因。在PHP中, 可以使用本文今天将与你共享的2种方法轻松地做到这一点。两者(具有相同名称的方法)都希望将字节数作为整数或字符串作为第一个参数, 并返回带有用户可以读取的字符串的字符串。
A.基于1024字节的简短版本基于1024的版本假定单个KB具有1024字节, 并且仅用3行代码, 你就可以轻松地将多个字节转换为可读的符号:
注意从理论上讲, KB完全由1024组成, 因此该方法是两者中最准确的一种。
<
?php /** * Converts a long string of bytes into a readable format e.g KB, MB, GB, TB, YB * * @param {Int} num The number of bytes. */function readableBytes($bytes) {$i = floor(log($bytes) / log(1024));
$sizes = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
return sprintf('%.02F', $bytes / pow(1024, $i)) * 1 . ' ' . $sizes[$i];
}// "1 KB"echo readableBytes(1024);
该方法可以按以下方式使用:
<
?php // "1000 B"echo readableBytes(1000);
// "9.42 MB"echo readableBytes(9874321);
// "9.31 GB"// The number of bytes as a string is accepted as wellecho readableBytes("10000000000");
// "648.37 TB"echo readableBytes(712893712304234);
// "5.52 PB"echo readableBytes(6212893712323224);
B.基于1000字节的版本另一个选项将字节转换为可读格式, 但计数为1KB等于1000字节, 而不是第一个选项的1024。这增加了精度的余量, 但是可以与我们的第一种方法几乎相同的逻辑工作:
<
?php /** * Converts a long string of bytes into a readable format e.g KB, MB, GB, TB, YB * * @param {Int} num The number of bytes. */function readableBytes($num) {$neg = $num <
0;
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
if ($neg){$num = -$num;
}if ($num <
1){return ($neg ? '-' : '') . $num . ' B';
}$exponent = min(floor(log($num) / log(1000)), count($units) - 1);
$num = sprintf('%.02F', ($num / pow(1000, $exponent)));
$unit = $units[$exponent];
return ($neg ? '-' : '') . $num . ' ' . $unit;
}
【使用PHP将字节转换为人类可读的值(KB,MB,GB,TB,PB,EB,ZB,YB)】该方法可以按以下方式使用:
<
?php// "1 KB"echo readableBytes(1000);
// "9.87 MB"echo readableBytes(9874321);
// "10 GB"// The number of bytes as a string is accepted as wellecho readableBytes("10000000000");
// "712.89 TB"echo readableBytes(712893712304234);
// "6.21 PB"echo readableBytes(6212893712323224);
编码愉快!
推荐阅读
- 如何在PHP中将日期时间四舍五入到最接近的10或5分钟
- 如何在Linux中获取和显示目录大小
- php|PHP对数据库的增删改查
- Android蓝牙BLE我可以修改哪些连接的配置参数
- Android bluetoothSocket连接错误
- 使用android-beacon-library检测蓝牙设备
- 目前连接的蓝牙设备android
- Android蓝牙聊天示例无效,无法连接设备
- Android nougat(超过7.0.0)的BLE(蓝牙低功耗)无法读取数据