PHP 格式字节转换为 Javascript
这不是一个真正的问题,而是一种挑战。
我有一个我经常使用的 PHP 函数,现在我需要在 Javascript 中使用它。
function formatBytes($bytes, $precision = 0) {
$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);
$bytes /= pow(1024, $pow);
return round($bytes, $precision) . ' ' . $units[$pow];
}
编辑:感谢您的回复,我想出了一些更短但不精确的内容(如果您有一些新的想法,请告诉我)
function format_bytes(size){
var base = Math.log(size) / Math.log(1024);
var suffixes = ['b', 'KB', 'MB', 'GB', 'TB' , 'PB' , 'EB'];
return Math.round(Math.pow(1024, base - Math.floor(base)), 0) + ' ' + suffixes[Math.floor(base)];
}
Not really a question but kind of a challenge..
I have this PHP function that I always use and now I need it in Javascript.
function formatBytes($bytes, $precision = 0) {
$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);
$bytes /= pow(1024, $pow);
return round($bytes, $precision) . ' ' . $units[$pow];
}
EDIT: Thanks to the replies I came up with something shorter, but without precision (let me know if you have some second thoughts)
function format_bytes(size){
var base = Math.log(size) / Math.log(1024);
var suffixes = ['b', 'KB', 'MB', 'GB', 'TB' , 'PB' , 'EB'];
return Math.round(Math.pow(1024, base - Math.floor(base)), 0) + ' ' + suffixes[Math.floor(base)];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
认为这是正确的,尚未测试它:
更新: 必须修复它,因为没有默认的精度,而且我在最后一行中有一个拼写错误,现在可以使用。
Think this is right, have not tested it:
Update: Had to fix it as there was no default for precision and I had a typo in the last line, now functional.
测试:
Tested: