Показать сообщение отдельно
  #1 (permalink)  
Старый 04.04.2013, 23:18
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Функция для перевода размера из байтов в понятный для человека формат
/**
 * Возвращает размер в байтах в понятном для человека формате.
 *
 * @author [email]tz4678@gmail.com[/email]
 * @param size размер в байтах, целое число
 * @param std стандарт, 'SI' | 'IEC'
 * @return string
 */
function formatSize(size, std) {
    if (std) std = std.toLowerCase();
    var i = 0, 
        base = std == 'si' ? 1000 : 1024, 
        prefixes = ' KMGTPEZY';
    
    if (size < 1) {
        return 0;
    }
    else if (size >= base) {
        i = Math.floor( Math.log(size) / Math.log(base) );
        if (i >= prefixes.length) return 'N/A';
        size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
    }
    
    return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
}


Примеры:

formatSize(1234567890)
"1.15 GB"
formatSize(1234567890, 'iec')
"1.15 GiB"
formatSize(1234567890, 'si')
"1.23 GB"

Последний раз редактировалось Антон Крамолов, 04.04.2013 в 23:21.
Ответить с цитированием