将字节数目转为人类友好的格式

Le Sun 23 February 2025

姑娘偷来了一段代码。

function bytesToSize(bytes, decimals = 2) {
  if (!Number(bytes)) {
    return '0 Bytes';
  }

  const kbToBytes = 1024;
  const dm = decimals < 0 ? 0 : decimals;
  const sizes = [
    'Bytes',
    'KiB',
    'MiB',
    'GiB',
    'TiB',
    'PiB',
    'EiB',
    'ZiB',
    'YiB',
  ];

  const index = Math.floor(
    Math.log(bytes) / Math.log(kbToBytes),
  );

  return `${parseFloat(
    (bytes / Math.pow(kbToBytes, index)).toFixed(dm),
  )} ${sizes[index]}`;
}
console.log(bytesToSize(1234)); // 1.21 KiB
console.log(bytesToSize(1234567)); // 1.18 MiB
console.log(bytesToSize(1234567890)); // 1.15 GiB
console.log(bytesToSize(1234567891231)); // 1.12 TiB
console.log(bytesToSize(12345678912312345)); // 10.97 PiB

这段代码是姑娘从这里偷的:

Par 纳兰风来, Catégorie : foundation

Tags :