Bayt cinsinden dosya boyutunu insan tarafından okunabilen dizeye dönüştürme


239

Bayt dosya boyutunu insan tarafından okunabilen dosya boyutuna dönüştürmek için bu işlevi kullanıyorum:

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];
};

Ancak, bunun% 100 doğru olmadığı anlaşılıyor. Örneğin:

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

Bu olmamalı "1.5 GB"mı? 1024'e bölünme hassasiyeti kaybediyor gibi görünüyor. Bir şeyi tamamen yanlış anlıyor muyum yoksa bunu yapmanın daha iyi bir yolu var mı?


3
getReadableFileSizeString (0); 0.1kb; p
Daniel Magnusson

2
Neden 1.5 olmalı? Bu 1.445281982421875doğru 1.4 aşağı yuvarlar.
mpen

1
1551859712 / (1024 ^ 3) = 1.445281982421875 doğru olan!
HM

2
Eklediğini seviyorum YB. Şüpheli herkes DB için 1 YB alacak. 100 trilyon dolara mal olacak !
guyarad

4
@guyarad - 50 yıl önce 5MB'lık bir sabit sürücünün ünlü bir resmi var (bir oda büyüklüğündeydi ve yaklaşık bir ton ağırlığındaydı). eminim o zaman bile GB ve TB hakkında hayal etmediler, ve bugün nerede olduğumuza bakın ... asla asla deme ;-)
TheCuBeMan

Yanıtlar:


45

İkili veya ondalık kuralını kullanmak isteyip istemediğinize bağlıdır.

Örneğin RAM her zaman ikili olarak ölçülür, bu nedenle 1551859712'yi ~ 1.4GiB olarak ifade etmek doğru olur.

Öte yandan, sabit disk üreticileri ondalık kullanmayı severler, bu yüzden buna ~ 1.6GB derler.

Ve sadece kafa karıştırıcı olmak için, disketler iki sistemin bir karışımını kullanır - 1 MB'ları aslında 1024000 bayttır.


3
supper funny ;-) "sadece kafa karıştırıcı olmak için, disketler iki sistemin bir karışımını kullanıyor - 1 MB'ları aslında 1024000 bayt."
FranXho

doğru, RAM boyutları IEC birimleri, metrik kullanan disk boyutları kullanılarak ölçülür .. her ikisini de dönüştürmek için bir izomorfik npm modülü vardır: byte-size
Lloyd

351

İşte yazdığım:

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
Bir ayar yapıyorum: Eşiği değerlendirirken mutlak değeri alın. Bu şekilde işlev negatif değerleri destekleyecektir. Güzel fonksiyon! Anahtar ifadesi kullanmadığınız için teşekkür ederiz !!
Aaron Blenkush

20
@AaronBlenkush: Ne zaman negatif bir dosya boyutunuz olur?
mpen

14
Ben sadece bir "temizleme" işleminden sonra boyut delta göstermek için kullandığınız bir Google E-Tablosu işlevini kopyaladı. Önce, Sonra ve Fark. Temizleme işlemi bazı veritabanı tablolarının büyümesine ve bazılarının azalmasına neden oldu. Örneğin, Tablo A'nın -1.95 MB'lık bir farkı varken Tablo B'nin 500 kB'lik bir farkı vardır. Bu nedenle: olumlu ve olumsuz :-)
Aaron Blenkush

İşte betiğin sıkıştırılmış sürümü: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: Küçültülmüş sürüm için teşekkürler. Yine de, neden görünmez iki Unicode karakteri olan U + 200C (SIFIR GENİŞLİK OLMAYAN) ve U + 200B'yi (SIFIR GENİŞLİK ALANI) E of EiB'den sonra eklediğinizi söyleyebilir misiniz? Bu kodu bir filigran olması amaçlanıyor, böylece bu kodu kimin kullandığını takip edebilirsiniz? Eğer öyleyse, yazılarınızda bunu şeffaf yapmalısınız.
Leviathan

81

Hesaplamanın başka bir düzenlemesi

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 ile başa çıkmıyor gibi görünüyor
Offirmo

4
0 ile ilgileniyor ya da işlemiyor mu? Sonuçta, bu bir if (size == 0) {} else {} ile gördüğümden daha zarif.
Rodrigo

13
İlk satırı 0 olarak değiştirmek var i = size == 0 ? 0 : Math.floor( Math.log(size) / Math.log(1024) );hile yapar gibi görünüyor. "0 B" dönecektir.
Gavin

Sadece FYI; Cevabın düz JavaScript olduğunu biliyorum, ancak birisi TypeScript'te kullanmak istemiyorsa, işe yaramıyor (yaptığınız gibi doğru yazılmamış toFixedve sonra bir dize ile matematik yapıyor.) Ne * 1işe
yarar

1
*1Değeri böylece, numaraya dize veri türünü değiştirir 1024almak 1 kByerine 1.00 kB. Number((size / Math.pow(1024, i)).toFixed(2))Aynı şeyi başarmak için TypeScript'i mutlu edebilirsiniz .
Adrian T

38

İşte bir sayıyı yeni uluslararası standartlara uygun olarak okunabilir bir dizgeye dönüştüren bir prototip.

Büyük sayıları temsil etmenin iki yolu vardır: Bunları 1000 = 10 3 (taban 10) veya 1024 = 2 10 (taban 2) 'nin katları olarak görüntüleyebilirsiniz. 1000'e bölerseniz muhtemelen SI önek adlarını kullanırsınız, 1024'e bölerseniz muhtemelen IEC önek adlarını kullanırsınız. Sorun 1024'e bölünmeyle başlar. Birçok uygulama bunun için SI önek isimlerini, bazıları ise IEC önek isimlerini kullanır. Mevcut durum bir karmaşa. SI ön ek adlarını görürseniz, sayının 1000 veya 1024'e bölünüp bölünmediğini bilmiyorsunuz

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});

Bu işlev hayır içerir loopve bu nedenle muhtemelen diğer bazı işlevlerden daha hızlıdır.

Kullanımı:

IEC öneki

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

SI öneki

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

her zaman bir dosyanın boyutunu hesaplamak için ikili modu kullandığım için IEC'yi varsayılan olarak ayarladım ... 1024'ün gücünü kullanarak


Bunlardan birini kısa bir oneliner işlevinde istiyorsanız:

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

Kullanımı:

console.log(fileSizeIEC(7412834521));

fonksiyonlar hakkında sorularınız varsa,


çok güzel bir kompakt kod, ben şahsen ondalık yerlerin kontrolü için ekstra karakter bir çift eklemek istiyorum.
Orwellophile

Selam! Aslında kodu nasıl jsfiddle ilk kez yazdı. Son yıllarda kendimi steno ve bitsel olarak kullanmayı öğrendim. Yavaş mobil cihazlar, yavaş internet, fazla yer yok ... bu yüzden çok zaman kazandım. Ama hepsi bu değil, genel perfromance her tarayıcıda büyük ölçüde arttı ve tüm kod çok daha hızlı yükleniyor ... jquery kullanmıyorum, bu yüzden her seferinde 100kb yüklemek zorunda değilim. Ayrıca mikrodenetleyicilerde, Akıllı TV'lerde, oyun konsollarında javascript yazdığımı da söylemeliyim. sınırlı alana (MCU'lar), performansa (SmartTV'ler) ve doğal olarak bazen yavaş bağlantıya (Mobil) sahiptir
cocco

Umarım seçimimi anlarsın. Yapabileceğim tek şey anlamadığınızı açıklamak ya da diğer tarafta yeni şeyler öğrenmek için her zaman mutluyum. Kodumda performansı artırabilecek veya yerden tasarruf edebilecek bir şey varsa, bunu duyduğuma sevindim.
cocco

18
Küçültme, kodlama stiliniz değil, oluşturma sürecinizin bir parçası olmalıdır. Hiçbir ciddi geliştirici bu kodu kullanmaz ve doğrulamanın okunması çok uzun sürdüğü için kullanmaz.
huysentruitw

1
"15.00 Bytes" görmek nefret edenler için, sadece bu kısmı biraz değiştirebilirsiniz:.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,91 GB"

sizeOf (7054110);
// => "6,73 MB"

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


2
Eğer bayt için ekstra boşluk kurtulmak istese, sıfır genişlikte boşluk kullanabilirsiniz \u200b: '\u200bKMGTP'.
cdmckay

15

ReactJS Bileşeni Olarak Çözüm

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>
        );
    }
});

GÜNCELLEME es6 kullananlar için bu aynı bileşenin durumsuz bir sürümü

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
Çok teşekkürler.
GetBytes

Çok hoş. Netleştirme ve ES6 gösterimi için şunu kullanabilirsiniz: return (! Bytes && '0 Bytes') || ${(bytes / (1024 ** i)).toFixed(2)} ${suffixes[i]};
Küçük Beyin

12

Cococo'nun fikrine dayanarak, daha az kompakt ama umarım daha kapsamlı bir örnek.

<!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

Ondalık basamak sayısının sayı boyutu ile orantılı olduğu "dosya yöneticisi" davranışını (örneğin, Windows Gezgini) istedim. Görünüşe göre diğer cevapların hiçbiri bunu yapmıyor.

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`
}

İşte bazı örnekler:

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 kullanmak onu bir dizeye dönüştürür, böylece raundunuz bir dize veya bir sayıdır. Bu kötü bir uygulamadır, kolayca bir sayıya dönüştürebilirsiniz:+num.tofixed(2)
Vincent Duprez

.toPrecision(3)Tüm bu vakaları kapsamıyor mu ? Oh .. Sanırım 1000 ila 1023 arasında bir alanı kapsamıyor.
mpen

7

Buradakine benzer başka bir örnek

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';
}

Benzer özelliklere sahip diğerlerine göre çok daha iyi performansı ölçer.


Bu, diğer cevaplardan daha iyi performans sağlar. Bunu kullanıyorum. Bazıları, periyodik bir hesaplama yaparken Chrome sekmelerimi asmayı ve% 99,9 CPU almamı sağladı.
Nir Lanka

5

İşte benim - gerçekten büyük dosyalar için de çalışıyor -_-

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;
}

Okuması oldukça zor olurken, hem döngü hem de üslü kullanımın performans vuruşunu birleştirir. Asıl anlamını göremiyorum.
spektrumlar

2
O zaman kullanma. Bu sadece kimin umurunda kullanılan chats müşteri cpu;)
fiffy

2
@fiffy İstemci CPU, özellikle mobil cihazlarda ve karmaşık uygulamalarda da değerlidir. :)
Raito

5

Cococo'nun cevabına dayanarak biraz desugerified (dürüst olmak gerekirse, rahat olduğum olanlar kaldı / eklendi) ve sondaki sıfırları göstermiyor, ancak yine de 0'ı destekliyor, diğerleri için faydalı olmayı umuyoruz:

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

Çözümünüz doğru. Gerçekleşmesi gereken önemli şey, almak 1551859712için 1.51000'e kadar bölme yapmanız gerektiğidir, ancak baytlar 1024'ten ikili-ondalık parçalara sayılır, bu nedenle Gigabyte değeri neden daha azdır.


@Eli ... evet, öyle görünüyor. Sanırım 1551859712'den beri "1.5" bekliyordum, ama bu ikili değil ondalık haldeyim anlamına gelir.
Hristo

3

@ Cocco'nun cevabını ilginç buldum , ancak bununla ilgili aşağıdaki sorunları yaşadım :

  1. Yerel türleri veya sahip olmadığınız türleri değiştirmeyin
  2. İnsanlar için temiz, okunabilir bir kod yazın, minifüslerin makineler için kodu optimize etmesine izin verin
  3. (TypeScript kullanıcıları için bonus) TypeScript ile iyi oynamıyor

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

Bu mpen cevabının boyut iyileştirmesi

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

Kullananlar için Angular, bunun angular-pipesiçin bir borusu olan bir paket var:

Dosya

import { BytesPipe } from 'angular-pipes';

kullanım

{{ 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 -->

Dokümanlara bağlantı .


0

Cevabım gecikebilir, ama sanırım birine yardım edecek.

Metrik öneki:

/**
 * 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]}`;
};

İkili önek:

/**
 * 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]}`;
};

Örnekler:

// 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

bayt ver = 1024 * 10 * 10 * 10;

console.log (getReadableFileSizeString (bayt))

1MB yerine 1000.0Кб döndürecek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.