SORU
2 Mayıs 2012, ÇARŞAMBA


dönüştürme insan okunabilir bayt cinsinden boyut

Bu işlev, insan okunabilir bir dosya boyutu (bayt cinsinden dosya boyutu dönüştürmek için 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, bu 0 değil, doğru değil gibi görünüyor. Örnek...

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

Bu olmamalı "1.5 GB"? 1024 bölümü hassas kaybediyor gibi görünüyor. Tamamen bir yanlış anlaşılma ya da böyle bir şekilde bunu yapmak için alır mıyım?

CEVAP
17 ŞUBAT 2013, Pazar


İşte yazdım

function humanFileSize(bytes, si) {
    var thresh = si ? 1000 : 1024;
    if(Math.abs(bytes) < thresh) {
        return bytes   ' B';
    }
    var units = si
        ? ['kB','MB','GB','TB','PB','EB','ZB','YB']
        : ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];
    var u = -1;
    do {
        bytes /= thresh;
          u;
    } while(Math.abs(bytes) >= thresh && u < units.length - 1);
    return bytes.toFixed(1) ' ' units[u];
}

örneğin

humanFileSize(5000,true)
> "5.0 kB"
humanFileSize(5000,false)
> "4.9 KiB"
humanFileSize(-10000000000000000000000000000)
> "-8271.8 YiB"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009