/**
* Возвращает размер в байтах в понятном для человека формате.
*
* @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"