function FormatBytes(bytes: number, decimals: number = 2) {
if (!+bytes) return '0 Bytes'
const kb: number = 1024
decimals = decimals < 0 ? 0 : decimals
const sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
const index: number = Math.floor(Math.log(bytes) / Math.log(kb))
return `${parseFloat((bytes / Math.pow(kb, index)).toFixed(decimals))} ${sizes[index]}`
}
console.log(FormatBytes(8913213499984251734634652));
console.log(FormatBytes(7873263499984734634652));
console.log(FormatBytes(58732639984734634652));
console.log(FormatBytes(6199984734634652));
console.log(FormatBytes(99984734634652));
console.log(FormatBytes(9823453784599));
console.log(FormatBytes(7124362542));
console.log(FormatBytes(23746178));
console.log(FormatBytes(1048576));
console.log(FormatBytes(1024000));
console.log(FormatBytes(873445));
console.log(FormatBytes(1024));
console.log(FormatBytes(978));
console.log(FormatBytes(13));
console.log(FormatBytes(0));
/*
run:
"7.37 YB"
"6.67 ZB"
"50.94 EB"
"5.51 PB"
"90.94 TB"
"8.93 TB"
"6.64 GB"
"22.65 MB"
"1 MB"
"1000 KB"
"852.97 KB"
"1 KB"
"978 Bytes"
"13 Bytes"
"0 Bytes"
*/