Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中最优雅的将字节转换为可读格式的方法是什么_Javascript - Fatal编程技术网

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

javascript中最优雅的将字节转换为可读格式的方法是什么,javascript,Javascript,我在stackoverflow上发现了一个非常优雅的“人性化”Java转换器,它不使用任何循环 javascript也可以这样做吗?(例如1024字节=>1KB) 听起来很简单,但我已经做了相当多的搜索 如果您想知道:函数字节数(字节,单位){ 如果(字节

我在stackoverflow上发现了一个非常优雅的“人性化”Java转换器,它不使用任何循环

javascript也可以这样做吗?(例如1024字节=>1KB)

听起来很简单,但我已经做了相当多的搜索

如果您想知道:

函数字节数(字节,单位){
如果(字节<(单位=单位| | 1000))
返回字节+B;
var exp=Math.floor(Math.log(字节)/Math.log(单位));
变量pre=''+(单位=1000?)kMGTPE:“kMGTPE”)。字符(exp-1)+(单位=1000?:“i”)+“B”;
返回(字节/Math.pow(单位,exp)).toFixed(1)+pre;
}
[ 0, 27, 999, 1000, 1023, 1024, 1728, 110592, 7077888, 
452984832,28991029248,1855425871872,9223372036854775807]。forEach(
函数(v){console.log(v,字节数(v),字节数(v,1024));};
/*显示:
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 kB”
1728“1.7KB”“1.7KB”
110592“110.6KB”“108.0KB”
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时出错

现在有两个非常不错的JS人性化库,我建议您看看:


如果您想看一下,还有一个问题。

Java或javascript?还有,您的问题是什么?Javascript=)。我在这里找到的版本是针对Java的。这里有一个函数可以实现这一点:你能再粘贴一次链接吗?当我点击复制粘贴链接不起作用时,我得到一个“未找到文章”,所以首先点击这个谷歌搜索-
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" */