如何在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ú
相关产品推荐
相关产品推荐

