在 JS 中将每秒位数 (BPS) 转换为可读的大小格式

Posted

技术标签:

【中文标题】在 JS 中将每秒位数 (BPS) 转换为可读的大小格式【英文标题】:Convert bits per second (BPS) to a readable size format in JS 【发布时间】:2017-10-11 11:23:04 【问题描述】:

我有以下图表,显示随时间变化的每秒位数:

我想重新格式化大小格式,使其看起来更具可读性。为此,我必须确定要显示的正确尺寸格式。

我的数据数组如下所示:

[2919556699, 2912227197, 3416038936, 2874881968, 2698255215, 2397888873, 2420727173, 2828319752,…]

我的问题 是否有任何通常用于决定可读尺寸格式的逻辑?如果不是,您建议实施什么来决定是否以 Kbps / Mbps / Gbps / Tbps 显示数据?

【问题讨论】:

【参考方案1】:

我不知道是否有一种通用的方法可以做到这一点,但是,您可以使用此功能将您的数据转换为更具可读性的状态。并归功于此question。

    alert(getReadableFileSizeString(150000000));
    
    function getReadableFileSizeString(fileSizeInBytes) 

    var i = -1;
    var byteUnits = [' kbps', ' Mbps', ' Gbps', ' Tbps', 'Pbps', 'Ebps', 'Zbps', 'Ybps'];
    do 
        fileSizeInBytes = fileSizeInBytes / 1024;
        i++;
     while (fileSizeInBytes > 1024);

    return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
    ;

带有 es6 的更现代版本:

const getReadableFileSizeString = (fileSizeInBytes) => 
    let i = -1;
    const byteUnits = [
      " kbps",
      " Mbps",
      " Gbps",
      " Tbps",
      "Pbps",
      "Ebps",
      "Zbps",
      "Ybps"
    ];
    do 
      fileSizeInBytes = fileSizeInBytes / 1024;
      i++;
     while (fileSizeInBytes > 1024);

    return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
  ;

codesandbox

【讨论】:

应该是 1000 而不是 1024。我们在这里转换的是速度而不是文件大小。

以上是关于在 JS 中将每秒位数 (BPS) 转换为可读的大小格式的主要内容,如果未能解决你的问题,请参考以下文章

将时间戳转换为可读的日期/时间 PHP

如何使用 XSLT 将刻度转换为可读的日期时间?

如何在sql server中将这些奇怪的字符解码为可读的波斯语?

将 ison 转换为可读的飞镖

将时间(自 YYYY 以来的天数给出)转换为可读的时间格式

将分钟转换为可读的天/小时/分钟