How to format bytes to kilobytes, megabytes, gigabytes and terabytes in TypeScript

2 Answers

0 votes
function FormatBytes(bytes: number) {
    const sizes: string[] = [ "B", "KB", "MB", "GB", "TB" ];
    
    let i: number = 0;
    let dblByte: number = bytes;
    
    for (; i < sizes.length && bytes >= 1024; i++, bytes /= 1024) {
        dblByte = bytes / 1024.0;
    }
             
    return dblByte.toFixed(2) + " " + sizes[i];
}
 
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:
 
"8.93 TB" 
"6.64 GB" 
"22.65 MB" 
"1.00 MB" 
"1000.00 KB" 
"852.97 KB" 
"1.00 KB" 
"978.00 B" 
"13.00 B" 
"0.00 B" 
 
*/

 



answered May 15, 2024 by avibootz
0 votes
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" 
 
*/

 



answered May 15, 2024 by avibootz
...