在JavaScript中,将字节转换为可读格式的最优雅的方法是什么?

4
我在stackoverflow上发现了一个非常优雅的Java“人性化”转换器,它没有使用任何循环。
是否可能使用javascript做到同样的事情?(例如1024字节=>1 kb)?
尽管听起来很简单,但我已经搜索了相当长时间。
如果你想知道:Java版本

Java还是JavaScript?另外,你有什么问题? - jrummell
1
JavaScript =)。我在这里找到的版本是Java的。 - Tarang
这是一个可以实现此功能的函数:http://codeaid.net/javascript/convert-size-in-bytes-to-human-readable-format-(javascript) - Jamey
你能再粘贴一次链接吗?当我点击那个链接时,显示“文章未找到”。 - Tarang
我找到了...在底部附近的评论中有一个非常漂亮优雅的。 - Tarang
2个回答

5
function byteCount (bytes, unit) {
  if (bytes < (unit = unit || 1000)) 
    return bytes + " B";
  var exp = Math.floor (Math.log (bytes) / Math.log (unit));
  var pre = ' ' +(unit === 1000 ? "kMGTPE" : "KMGTPE").charAt (exp - 1) + (unit === 1000 ? "" : "i") + 'B';
    return (bytes / Math.pow (unit, exp)).toFixed (1) + pre;
}

[ 0, 27, 999, 1000, 1023, 1024, 1728, 110592, 7077888, 
  452984832, 28991029248, 1855425871872, 9223372036854775807].forEach (
    function (v) { console.log (v, byteCount (v), byteCount (v, 1024)); });

/* Displays :    
0 "0 B" "0 B"
27 "27 B" "27 B"
999 "999 B" "999 B"
1000 "1.0 kB" "1000 B"
1023 "1.0 kB" "1023 B"
1024 "1.0 kB" "1.0 KiB"
1728 "1.7 kB" "1.7 KiB"
110592 "110.6 kB" "108.0 KiB"
7077888 "7.1 MB" "6.8 MiB"
452984832 "453.0 MB" "432.0 MiB"
28991029248 "29.0 GB" "27.0 GiB"
1855425871872 "1.9 TB" "1.7 TiB"
9223372036854776000 "9.2 EB" "8.0 EiB" */

请注意,Java版本结果表中显示的7.1 KB应更正为7.1 MB。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接