Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in
/home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line
380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in
/home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line
380
Note: This uses the IEC standard. That means 1 KB = 1024, not 1000 like the SI standard.
/**
* @function: getBytesWithUnit()
* @purpose: Converts bytes to the most simplified unit.
* @param: (number) bytes, the amount of bytes
* @returns: (string)
*/
var getBytesWithUnit = function( bytes ){
if( isNaN( bytes ) ){ return; }
var units = [ ' bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB' ];
var amountOf2s = Math.floor( Math.log( +bytes )/Math.log(2) );
if( amountOf2s < 1 ){
amountOf2s = 0;
}
var i = Math.floor( amountOf2s / 10 );
bytes = +bytes / Math.pow( 2, 10*i );
// Rounds to 3 decimals places.
if( bytes.toString().length > bytes.toFixed(3).toString().length ){
bytes = bytes.toFixed(3);
}
return bytes + units[i];
}; |
/**
* @function: getBytesWithUnit()
* @purpose: Converts bytes to the most simplified unit.
* @param: (number) bytes, the amount of bytes
* @returns: (string)
*/
var getBytesWithUnit = function( bytes ){
if( isNaN( bytes ) ){ return; }
var units = [ ' bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB' ];
var amountOf2s = Math.floor( Math.log( +bytes )/Math.log(2) );
if( amountOf2s < 1 ){
amountOf2s = 0;
}
var i = Math.floor( amountOf2s / 10 );
bytes = +bytes / Math.pow( 2, 10*i );
// Rounds to 3 decimals places.
if( bytes.toString().length > bytes.toFixed(3).toString().length ){
bytes = bytes.toFixed(3);
}
return bytes + units[i];
};
Output:
console.log( getBytesWithUnit( ) ); // returns undefined.
console.log( getBytesWithUnit( 'non a number.' ) ); // returns undefined.
console.log( getBytesWithUnit( '123' )); // returns '123 bytes'.
console.log( getBytesWithUnit( 1024 )); // returns '1 KB'.
console.log( getBytesWithUnit( (1024 * 1024) + 1024 )); // returns '1.001 MB'.
console.log( getBytesWithUnit( 1024 * 1024 * 1024 )); // returns '1 GB'.
console.log( getBytesWithUnit( 1024 * 1024 * 64 )); // returns '64 MB'. |
console.log( getBytesWithUnit( ) ); // returns undefined.
console.log( getBytesWithUnit( 'non a number.' ) ); // returns undefined.
console.log( getBytesWithUnit( '123' )); // returns '123 bytes'.
console.log( getBytesWithUnit( 1024 )); // returns '1 KB'.
console.log( getBytesWithUnit( (1024 * 1024) + 1024 )); // returns '1.001 MB'.
console.log( getBytesWithUnit( 1024 * 1024 * 1024 )); // returns '1 GB'.
console.log( getBytesWithUnit( 1024 * 1024 * 64 )); // returns '64 MB'.
Update
I updated the script to support both the SI and IEC standard.
Check it out here http://bateru.com/news/2012/03/code-of-the-day-converts-bytes-to-unit/