바이트 단위의 파일 크기를 사람이 읽을 수있는 문자열로 변환


239

이 함수를 사용하여 파일 크기 (바이트)를 사람이 읽을 수있는 파일 크기로 변환합니다.

function getReadableFileSizeString(fileSizeInBytes) {
    var i = -1;
    var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
    do {
        fileSizeInBytes = fileSizeInBytes / 1024;
        i++;
    } while (fileSizeInBytes > 1024);

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

그러나 이것이 100 % 정확하지 않은 것 같습니다. 예를 들면 다음과 같습니다.

getReadableFileSizeString(1551859712); // output is "1.4 GB"

이러면 안 "1.5 GB"됩니까? 1024로 나누면 정밀도가 떨어지는 것처럼 보입니다. 내가 완전히 오해하고 있거나 더 좋은 방법이 있습니까?


3
getReadableFileSizeString (0); 0.1kb를 반환; p
Daniel Magnusson

2
왜 1.5 여야합니까? 그건 1.445281982421875제대로 1.4까지 반올림한다.
mpen

1
1551859712 / (1024 ^ 3) = 1.445281982421875 맞습니다!
HM

2
나는 당신이 추가 한 것을 좋아합니다 YB. 의심 할 여지없이 누구나 DB에 1YB를받을 수 있습니다. 그것은 비용이 100 조 달러 !
guyarad

4
@guyarad-50 년 전에 5MB 하드 드라이브의 유명한 사진이 있습니다 (방 크기와 무게는 약 1 톤이었습니다). 나는 그때 GB와 TB에 대해 꿈도 꾸지 않았고, 우리가 오늘있는 곳을 보지 못했다 ... 절대 말하지
마라

답변:


45

이진법 또는 십진법을 사용할지 여부에 따라 다릅니다.

예를 들어, RAM은 항상 이진수로 측정되므로 ~ 1.4GiB가 올바른 1551859712를 표현합니다.

반면에 하드 디스크 제조업체는 십진수를 사용하기를 원하므로 ~ 1.6GB라고 부릅니다.

그리고 혼란스럽게도 플로피 디스크는 두 시스템을 혼합하여 사용합니다. 1MB는 ​​실제로 1024000 바이트입니다.


3
supper funny ;-) "혼란 스럽기 때문에 플로피 디스크는 두 시스템의 혼합을 사용합니다. 1MB는 ​​실제로 1024000 바이트입니다."
FranXho

사실, RAM 크기는 IEC 단위를 사용하여 측정되고 디스크 크기는 미터법을 사용하여 측정됩니다. 바이트 크기
Lloyd

351

내가 쓴 것은 다음과 같습니다.

function humanFileSize(bytes, si=false, dp=1) {
  const thresh = si ? 1000 : 1024;

  if (Math.abs(bytes) < thresh) {
    return bytes + ' B';
  }

  const units = si 
    ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] 
    : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
  let u = -1;
  const r = 10**dp;

  do {
    bytes /= thresh;
    ++u;
  } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);


  return bytes.toFixed(dp) + ' ' + units[u];
}


console.log(humanFileSize(5000, true))  // 5.0 kB
console.log(humanFileSize(5000, false))  // 4.9 KiB
console.log(humanFileSize(-10000000000000000000000000000))  // -8271.8 YiB
console.log(humanFileSize(999949, true))  // 999.9 kB
console.log(humanFileSize(999950, true))  // 1.0 MB
console.log(humanFileSize(999950, true, 2))  // 999.95 kB
console.log(humanFileSize(999500, true, 0))  // 1 MB


1
임계 값을 평가할 때는 절대 값을 사용하십시오. 이 방법으로 함수는 음수 값을 지원합니다. 좋은 기능! switch 문을 사용하지 주셔서 감사합니다 !!
Aaron Blenkush

20
@AaronBlenkush : 음의 파일 크기는 언제입니까?
mpen

14
방금 "정리"작업 후 크기 델타를 표시하기 위해 사용중인 Google 스프레드 시트에 함수를 복사했습니다. 전, 후 및 차이. 정리 작업으로 인해 일부 데이터베이스 테이블이 커지고 다른 데이터베이스 테이블이 줄었습니다. 예를 들어, 표 A의 diff는 -1.95MB이고 표 B의 diff는 500kB입니다. 따라서 : 긍정적이고 부정적인 :-)
Aaron Blenkush

다음은 스크립트의 압축 버전입니다.function humanFileSize(B,i){var e=i?1e3:1024;if(Math.abs(B)<e)return B+" B";var a=i?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],t=-1;do B/=e,++t;while(Math.abs(B)>=e&&t<a.length-1);return B.toFixed(1)+" "+a[t]}
RAnders00

1
@ RAnders00 : 축소 된 버전에 감사드립니다. 당신은하지만, 말해 줄 수, 당신이 후 두 눈에 보이지 않는 유니 코드 문자 U + 200C (ZERO WIDTH NON-JOINER) 및 U + 200B (ZERO WIDTH SPACE)를 삽입하는 이유 E 자주 EIB ? 이 코드를 사용하는 사람을 추적 할 수 있도록 워터 마크 용입니까? 그렇다면 게시물에 투명하게 표시해야한다고 생각합니다.
Leviathan

81

계산의 다른 실시 예

function humanFileSize(size) {
    var i = Math.floor( Math.log(size) / Math.log(1024) );
    return ( size / Math.pow(1024, i) ).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
};

8
0을 처리하지 않는 것 같습니다
Offirmo

4
0을 처리하거나 처리하지 않습니까? 결국, 이것은 if (size == 0) {} else {}를 사용하여 내가 본 것보다 여전히 우아합니다.
로드리고

13
var i = size == 0 ? 0 : Math.floor( Math.log(size) / Math.log(1024) );0이면 첫 번째 줄을 변경하면 트릭을 수행하는 것 같습니다. "0 B"가 반환됩니다.
Gavin

참고로 대답은 일반 JavaScript라는 것을 알고 있지만 누군가가 TypeScript에서 사용하지 않으려면 작동하지 않습니다 (올바로 입력 한 toFixed다음 문자열로 수학을 수행 할 때 올바르게 입력되지 않음)* 1
Frexuz

1
*1값에 대한, 그래서 수 문자열에서 데이터 형식을 변경 1024당신이 얻는 1 kB대신 1.00 kB. Number((size / Math.pow(1024, i)).toFixed(2))동일한 작업 을 수행하여 TypeScript를 행복하게 만들 수 있습니다 .
Adrian T

38

다음은 새로운 국제 표준에 따라 숫자를 읽을 수있는 문자열로 변환하는 프로토 타입입니다.

큰 숫자를 나타내는 두 가지 방법이 있습니다. 1000 = 10 3 (기본 10) 또는 1024 = 2 10 (기본 2)의 배수로 표시 할 수 있습니다. 1000으로 나누면 SI 접두사 이름을 사용하고 1024로 나누면 IEC 접두사 이름을 사용하게됩니다. 문제는 1024로 나누는 것으로 시작합니다. 많은 응용 프로그램에서 SI 접두사 이름을 사용하고 일부 응용 프로그램은 IEC 접두사 이름을 사용합니다. 현재 상황은 혼란입니다. SI 접두사 이름이 표시되면 숫자를 1000 또는 1024로 나눈 것인지 알 수 없습니다

https://wiki.ubuntu.com/UnitsPolicy

http://en.wikipedia.org/wiki/Template:Quantities_of_bytes

Object.defineProperty(Number.prototype,'fileSize',{value:function(a,b,c,d){
 return (a=a?[1e3,'k','B']:[1024,'K','iB'],b=Math,c=b.log,
 d=c(this)/c(a[0])|0,this/b.pow(a[0],d)).toFixed(2)
 +' '+(d?(a[1]+'MGTPEZY')[--d]+a[2]:'Bytes');
},writable:false,enumerable:false});

이 함수에는 no가 포함되어 loop있으므로 다른 함수보다 빠릅니다.

용법:

IEC 접두사

console.log((186457865).fileSize()); // default IEC (power 1024)
//177.82 MiB
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB

SI 접두사

console.log((186457865).fileSize(1)); //1,true for SI (power 1000)
//186.46 MB 
//kB,MB,GB,TB,PB,EB,ZB,YB

파일 크기를 계산하기 위해 항상 이진 모드를 사용했기 때문에 IEC를 기본값으로 설정했습니다 .1024의 거듭 제곱을 사용합니다.


짧은 oneliner 기능으로 그중 하나를 원한다면 :

function fileSizeSI(a,b,c,d,e){
 return (b=Math,c=b.log,d=1e3,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
 +' '+(e?'kMGTPEZY'[--e]+'B':'Bytes')
}
//kB,MB,GB,TB,PB,EB,ZB,YB

IEC

function fileSizeIEC(a,b,c,d,e){
 return (b=Math,c=b.log,d=1024,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)
 +' '+(e?'KMGTPEZY'[--e]+'iB':'Bytes')
}
//KiB,MiB,GiB,TiB,PiB,EiB,ZiB,YiB

용법:

console.log(fileSizeIEC(7412834521));

기능에 대해 궁금한 점이 있으면


아주 멋진 컴팩트 코드, 나는 개인적으로 소수 자릿수를 제어하기 위해 두 개의 여분의 문자를 추가합니다.
Orwellophile

안녕하세요! 실제로 코드는 jsfiddle에서 처음으로 작성한 방법입니다. 지난 몇 년 동안 나는 속기와 비트 단위를 사용하는 법을 배웠습니다. 느린 모바일 장치, 느린 인터넷, 공간이 부족합니다. 이렇게하면 시간이 많이 절약됩니다. 그러나 전부는 아닙니다. 모든 브라우저에서 전반적인 성능이 크게 향상되었으며 전체 코드가 훨씬 빠르게로드됩니다 ... jquery를 사용하지 않으므로 매번 100kb를로드 할 필요가 없습니다. 또한 마이크로 컨트롤러, 스마트 TV, 게임 콘솔에서도 자바 스크립트를 작성한다고 말해야합니다. 그것들은 제한된 공간 (MCU), 성능 (SmartTV) 및 자연스럽게 때때로 느린 연결 (Mobile)을 가지고 있습니다
cocco

나는 당신이 내 선택을 이해하기를 바랍니다. 내가 할 수있는 것은 당신이 이해하지 못하는 것을 설명하거나 반대편에서 항상 새로운 것을 배우게되어 기쁘다. 내 코드에 성능을 높이거나 공간을 절약 할 수있는 무언가가 있다면 기뻐합니다.
cocco

18
축소는 코딩 스타일이 아닌 빌드 프로세스의 일부 여야합니다. 정확성을 읽고 검증하는 데 너무 오래 걸리기 때문에 심각한 개발자는이 코드를 사용하지 않습니다.
huysentruitw

1
"15.00 바이트"를보기 싫어하는 사람들은이 부분을 약간 수정하면됩니다 :.toFixed(e ? 2 : 0)
Lukman

20
sizeOf = function (bytes) {
  if (bytes == 0) { return "0.00 B"; }
  var e = Math.floor(Math.log(bytes) / Math.log(1024));
  return (bytes/Math.pow(1024, e)).toFixed(2)+' '+' KMGTP'.charAt(e)+'B';
}

sizeOf (2054110009);
// => "1.91GB"

sizeOf (7054110);
// => "6.73MB"

sizeOf ((3 * 1024 * 1024));
// => "3.00 MB"


2
당신이 바이트 여분의 공간을 제거하고 싶다면, 당신은 제로 폭 공간을 사용할 수 있습니다 \u200b: '\u200bKMGTP'.
cdmckay

15

ReactJS 컴포넌트로서의 솔루션

Bytes = React.createClass({
    formatBytes() {
        var i = Math.floor(Math.log(this.props.bytes) / Math.log(1024));
        return !this.props.bytes && '0 Bytes' || (this.props.bytes / Math.pow(1024, i)).toFixed(2) + " " + ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'][i]
    },
    render () {
        return (
            <span>{ this.formatBytes() }</span>
        );
    }
});

업데이트 es6을 사용하는 사람들에게는 여기 동일한 구성 요소의 상태 비 저장 버전이 있습니다.

const sufixes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const getBytes = (bytes) => {
  const i = Math.floor(Math.log(bytes) / Math.log(1024));
  return !bytes && '0 Bytes' || (bytes / Math.pow(1024, i)).toFixed(2) + " " + sufixes[i];
};

const Bytes = ({ bytes }) => (<span>{ getBytes(bytes) }</span>);

Bytes.propTypes = {
  bytes: React.PropTypes.number,
};

1
감사합니다 getBytes 함수의 첫 번째 줄에서 Math.log () 안에 "바이트"를 잊어 버렸습니다
BaptWaels

아주 좋아요 명확성과 ES6 표기법의 경우 다음을 사용할 수 있습니다. return (! bytes && '0 Bytes') || ${(bytes / (1024 ** i)).toFixed(2)} ${suffixes[i]};
Little Brain

12

cocco 의 아이디어를 기반으로 , 여기에 덜 컴팩트하지만 더 포괄적 인 예가 있습니다.

<!DOCTYPE html>
<html>
<head>
<title>File info</title>

<script>
<!--
function fileSize(bytes) {
    var exp = Math.log(bytes) / Math.log(1024) | 0;
    var result = (bytes / Math.pow(1024, exp)).toFixed(2);

    return result + ' ' + (exp == 0 ? 'bytes': 'KMGTPEZY'[exp - 1] + 'B');
}

function info(input) {
    input.nextElementSibling.textContent = fileSize(input.files[0].size);
} 
-->
</script>
</head>

<body>
<label for="upload-file"> File: </label>
<input id="upload-file" type="file" onchange="info(this)">
<div></div>
</body>
</html> 

8

소수점 이하 자릿수가 숫자 크기에 비례하는 "파일 관리자"동작 (예 : Windows 탐색기)을 원했습니다. 다른 답변들 중 어느 것도 이것을하지 않습니다.

function humanFileSize(size) {
    if (size < 1024) return size + ' B'
    let i = Math.floor(Math.log(size) / Math.log(1024))
    let num = (size / Math.pow(1024, i))
    let round = Math.round(num)
    num = round < 10 ? num.toFixed(2) : round < 100 ? num.toFixed(1) : round
    return `${num} ${'KMGTPEZY'[i-1]}B`
}

몇 가지 예는 다음과 같습니다.

humanFileSize(0)          // "0 B"
humanFileSize(1023)       // "1023 B"
humanFileSize(1024)       // "1.00 KB"
humanFileSize(10240)      // "10.0 KB"
humanFileSize(102400)     // "100 KB"
humanFileSize(1024000)    // "1000 KB"
humanFileSize(12345678)   // "11.8 MB"
humanFileSize(1234567890) // "1.15 GB"

toFixed를 사용하면 문자열로 변환되므로 라운드는 문자열 또는 숫자입니다. 이 나쁜 연습, 쉽게 숫자로 다시 변환 할 수 있습니다 :+num.tofixed(2)
빈센트 Duprez

않는 .toPrecision(3)모든 경우를 포함하지? 아 .. 1000에서 1023 사이는 다루지 않는 것 같아. Bummer.
mpen

7

여기에 비슷한 다른 예

function fileSize(b) {
    var u = 0, s=1024;
    while (b >= s || -b >= s) {
        b /= s;
        u++;
    }
    return (u ? b.toFixed(1) + ' ' : b) + ' KMGTPEZY'[u] + 'B';
}

유사한 기능을 가진 다른 것보다 무시해도 좋은 성능을 측정합니다.


이것은 다른 답변보다 더 나은 성능을 제공합니다. 나는 이것을 사용하고 있습니다. 다른 사람들은 정기적 인 계산을 수행하면서 Chrome 탭을 멈추고 99.9 % CPU를 사용했습니다.
Nir Lanka

5

여기 내 것이 있습니다-정말 큰 파일에서도 작동합니다 -_-

function formatFileSize(size)
{
    var sizes = [' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'];
    for (var i = 1; i < sizes.length; i++)
    {
        if (size < Math.pow(1024, i)) return (Math.round((size/Math.pow(1024, i-1))*100)/100) + sizes[i-1];
    }
    return size;
}

루핑과 지수 사용의 성능 적중을 결합한 반면 읽기는 매우 어렵습니다. 나는 요점을 실제로 보지 못한다.
스펙트럼

2
그런 다음 사용하지 마십시오. 그것은 걱정하는 사람들 때문에 사용 단지 클라이언트 측의 CPU 그게 전부입니다)
fiffy

2
@fiffy 클라이언트 CPU는 특히 모바일 및 복잡한 애플리케이션에서 매우 중요합니다. :)
Raito

5

cocco의 답변을 기반으로 하지만 약간 desugerified (솔직히 말하면 편안하고 남아있는)는 남아 있고 추가됩니다 .0을 표시하지 않지만 여전히 0을 지원하므로 다른 사람들에게 유용 할 수 있기를 바랍니다.

function fileSizeSI(size) {
    var e = (Math.log(size) / Math.log(1e3)) | 0;
    return +(size / Math.pow(1e3, e)).toFixed(2) + ' ' + ('kMGTPEZY'[e - 1] || '') + 'B';
}


// test:
document.write([0, 23, 4322, 324232132, 22e9, 64.22e12, 76.22e15, 64.66e18, 77.11e21, 22e24].map(fileSizeSI).join('<br>'));


4
1551859712 / 1024 = 1515488
1515488 / 1024 = 1479.96875
1479.96875 / 1024 = 1.44528198242188

당신의 해결책은 맞습니다. 실현하기 위해 중요한 것은에서 얻기 위해서이다 15518597121.5기가 바이트의 값이 작 따라서 왜, 당신은 1000 분열을해야하지만, 바이트가 1024 이진에 진수 덩어리로 계산됩니다.


@Eli ... 그렇습니다. 나는 1551859712 이후로 "1.5"를 기대하고 있었지만, 나는 이진수가 아니라 십진수임을 의미합니다.
Hristo

3

내가 발견 코코의 응답 @ 재미 있지만, 그것으로 다음과 같은 문제가 있었다 :

  1. 소유하지 않은 기본 유형 또는 유형을 수정하지 마십시오
  2. 사람을위한 깨끗하고 읽기 쉬운 코드 작성, 미니어처가 기계의 코드 최적화
  3. (TypeScript 사용자를위한 보너스) TypeScript와 잘 어울리지 않습니다

TypeScript :

 /**
 * Describes manner by which a quantity of bytes will be formatted.
 */
enum ByteFormat {
  /**
   * Use Base 10 (1 kB = 1000 bytes). Recommended for sizes of files on disk, disk sizes, bandwidth.
   */
  SI = 0,
  /**
   * Use Base 2 (1 KiB = 1024 bytes). Recommended for RAM size, size of files on disk.
   */
  IEC = 1
}

/**
 * Returns a human-readable representation of a quantity of bytes in the most reasonable unit of magnitude.
 * @example
 * formatBytes(0) // returns "0 bytes"
 * formatBytes(1) // returns "1 byte"
 * formatBytes(1024, ByteFormat.IEC) // returns "1 KiB"
 * formatBytes(1024, ByteFormat.SI) // returns "1.02 kB"
 * @param size The size in bytes.
 * @param format Format using SI (Base 10) or IEC (Base 2). Defaults to SI.
 * @returns A string describing the bytes in the most reasonable unit of magnitude.
 */
function formatBytes(
  value: number,
  format: ByteFormat = ByteFormat.SI
) {
  const [multiple, k, suffix] = (format === ByteFormat.SI
    ? [1000, 'k', 'B']
    : [1024, 'K', 'iB']) as [number, string, string]
  // tslint:disable-next-line: no-bitwise
  const exp = (Math.log(value) / Math.log(multiple)) | 0
  // or, if you'd prefer not to use bitwise expressions or disabling tslint rules, remove the line above and use the following:
  // const exp = value === 0 ? 0 : Math.floor(Math.log(value) / Math.log(multiple)) 
  const size = Number((value / Math.pow(multiple, exp)).toFixed(2))
  return (
    size +
    ' ' +
    (exp 
       ? (k + 'MGTPEZY')[exp - 1] + suffix 
       : 'byte' + (size !== 1 ? 's' : ''))
  )
}

// example
[0, 1, 1024, Math.pow(1024, 2), Math.floor(Math.pow(1024, 2) * 2.34), Math.pow(1024, 3), Math.floor(Math.pow(1024, 3) * 892.2)].forEach(size => {
  console.log('Bytes: ' + size)
  console.log('SI size: ' + formatBytes(size))
  console.log('IEC size: ' + formatBytes(size, 1) + '\n')
});

1

이것은 mpen answer의 크기 개선입니다

function humanFileSize(bytes, si=false) {
  let u, b=bytes, t= si ? 1000 : 1024;     
  ['', si?'k':'K', ...'MGTPEZY'].find(x=> (u=x, b/=t, b**2<1));
  return `${u ? (t*b).toFixed(1) : bytes} ${u}${!si && u ? 'i':''}B`;    
}


0

를 사용하는 사람들을 위해 파이프가있는 Angular패키지 angular-pipes가 있습니다.

파일

import { BytesPipe } from 'angular-pipes';

용법

{{ 150 | bytes }} <!-- 150 B -->
{{ 1024 | bytes }} <!-- 1 KB -->
{{ 1048576 | bytes }} <!-- 1 MB -->
{{ 1024 | bytes: 0 : 'KB' }} <!-- 1 MB -->
{{ 1073741824 | bytes }} <!-- 1 GB -->
{{ 1099511627776 | bytes }} <!-- 1 TB -->
{{ 1073741824 | bytes : 0 : 'B' : 'MB' }} <!-- 1024 MB -->

문서에 링크하십시오 .


0

대답이 늦을 수도 있지만 누군가에게 도움이 될 것 같습니다.

측정 항목 접두사 :

/**
 * Format file size in metric prefix
 * @param fileSize
 * @returns {string}
 */
const formatFileSizeMetric = (fileSize) => {
  let size = Math.abs(fileSize);

  if (Number.isNaN(size)) {
    return 'Invalid file size';
  }

  if (size === 0) {
    return '0 bytes';
  }

  const units = ['bytes', 'kB', 'MB', 'GB', 'TB'];
  let quotient = Math.floor(Math.log10(size) / 3);
  quotient = quotient < units.length ? quotient : units.length - 1;
  size /= (1000 ** quotient);

  return `${+size.toFixed(2)} ${units[quotient]}`;
};

이진 접두사 :

/**
 * Format file size in binary prefix
 * @param fileSize
 * @returns {string}
 */
const formatFileSizeBinary = (fileSize) => {
  let size = Math.abs(fileSize);

  if (Number.isNaN(size)) {
    return 'Invalid file size';
  }

  if (size === 0) {
    return '0 bytes';
  }

  const units = ['bytes', 'kiB', 'MiB', 'GiB', 'TiB'];
  let quotient = Math.floor(Math.log2(size) / 10);
  quotient = quotient < units.length ? quotient : units.length - 1;
  size /= (1024 ** quotient);

  return `${+size.toFixed(2)} ${units[quotient]}`;
};

예 :

// Metrics prefix
formatFileSizeMetric(0)      // 0 bytes
formatFileSizeMetric(-1)     // 1 bytes
formatFileSizeMetric(100)    // 100 bytes
formatFileSizeMetric(1000)   // 1 kB
formatFileSizeMetric(10**5)  // 10 kB
formatFileSizeMetric(10**6)  // 1 MB
formatFileSizeMetric(10**9)  // 1GB
formatFileSizeMetric(10**12) // 1 TB
formatFileSizeMetric(10**15) // 1000 TB

// Binary prefix
formatFileSizeBinary(0)     // 0 bytes
formatFileSizeBinary(-1)    // 1 bytes
formatFileSizeBinary(1024)  // 1 kiB
formatFileSizeBinary(2048)  // 2 kiB
formatFileSizeBinary(2**20) // 1 MiB
formatFileSizeBinary(2**30) // 1 GiB
formatFileSizeBinary(2**40) // 1 TiB
formatFileSizeBinary(2**50) // 1024 TiB

-1

바이트 = 1024 * 10 * 10 * 10;

console.log (getReadableFileSizeString (바이트))

1MB 대신 1000.0Кб를 반환합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.