바이트를 선택에 따라 십진 바이트 혹은 이진 바이트로 바꾸게 하는 코드를 소개합니다.

const transFormatBytes = (
  bytes: number,
  digits: number = 0,
  isBinary: boolean = true
) => {
  const unit = isBinary ? 1024 : 1000;
  const yota = isBinary ? Math.pow(2, 80) : Math.pow(1000, 8);

  if (bytes >= yota) {
    return `${(bytes / yota).toFixed(digits)} ${unit ? "YiB" : "YB"}`;
  }

  const format = isBinary
    ? ["Bytes", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"]
    : ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"];

  const formatBytes = (
    value: number,
    divisor: number,
    digits: number,
    [currentLabel, ...otherLabels]: string[]
  ): string => {
    if (value < divisor) {
      return `${value.toFixed(digits)} ${currentLabel}`;
    }
    return formatBytes(value / divisor, divisor, digits, otherLabels);
  };

  return formatBytes(bytes, unit, digits, format);
};

사용하기

transFormatBytes(17179869184, 2)

>>> 16.00 GiB

'Javascript' 카테고리의 다른 글

[Browser API] fetch API를 알아보자!  (0) 2020.01.05
[WebAPI] window.localStorage 부시기!  (5) 2019.09.29
[Babel] 사용기(1)  (0) 2019.06.26
파일(Image) 용량을 확인하는 방법_v1  (0) 2019.06.05
배열의 중복값 제거  (0) 2019.04.25

+ Recent posts