You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将人类可读文件大小字符串转换为字节数

JavaScript实现人类可读文件大小转字节数

可以通过正则匹配提取数值和单位,结合二进制单位的换算规则实现转换,以下是实用的实现方案:

function humanReadableToBytes(sizeStr) {
  // 匹配数值(支持整数和小数)和单位(忽略大小写,支持B/KB/MB/GB/TB等)
  const match = sizeStr.trim().match(/^(\d+\.?\d*)([KMGTPEZY]?B)$/i);
  if (!match) {
    // 无效格式返回NaN,也可根据需求抛出错误
    return NaN;
  }

  const [, numStr, unit] = match;
  const num = parseFloat(numStr);
  // 统一转大写,避免大小写差异
  const upperUnit = unit.toUpperCase();

  // 定义二进制单位对应的字节倍数(1024进制)
  const unitMultipliers = {
    'B': 1,
    'KB': 1024,
    'MB': 1024 ** 2,
    'GB': 1024 ** 3,
    'TB': 1024 ** 4,
    'PB': 1024 ** 5,
    'EB': 1024 ** 6,
    'ZB': 1024 ** 7,
    'YB': 1024 ** 8
  };

  // 计算字节数,返回整数(如需保留小数可去掉Math.round)
  return Math.round(num * unitMultipliers[upperUnit]);
}

功能说明

  • 支持整数/小数格式的大小字符串,比如10MB、2.5KB、0.5GB
  • 忽略单位大小写,兼容mb、kB这类写法
  • 支持从B到YB的二进制单位
  • 无效格式(比如10Invalid、MB10)会返回NaN,方便做输入校验

测试示例

console.log(humanReadableToBytes('1KB')); // 输出 1024
console.log(humanReadableToBytes('10MB')); // 输出 10485760
console.log(humanReadableToBytes('2.5GB')); // 输出 2684354560
console.log(humanReadableToBytes('5B')); // 输出 5
console.log(humanReadableToBytes('0.3tb')); // 输出 329853488333

如果需求是采用1000进制(比如1KB=1000字节,而非1024),只需把unitMultipliers里的1024替换为1000即可。

内容的提问来源于stack exchange,提问作者Tạ Anh Tú

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:35:21