5

I found a very elegant 'humanize' converter for Java on stackoverflow which didn't use any loops.

Is it possible to do the same with javascript? (e.g 1024 bytes => 1 kb)?

As simple as it sounds I have done quite a search for it

Incase you're wondering : Java Version

6
  • Java or javascript? Also, what is your question? Commented May 17, 2012 at 17:35
  • 1
    Javascript =). The version I found here was for java Commented May 17, 2012 at 17:36
  • Here's a function to do it: codeaid.net/javascript/… Commented May 17, 2012 at 17:38
  • Could you paste the link again I get an 'Article not found' when I click that Commented May 17, 2012 at 17:39
  • Copy paste of link doesn't work, so first hit on this google search - google.com/… Commented May 17, 2012 at 17:46

2 Answers 2

6
function byteCount (bytes, unit) {
  if (bytes < (unit = unit || 1000)) 
    return bytes + " B";
  var exp = Math.floor (Math.log (bytes) / Math.log (unit));
  var pre = ' ' +(unit === 1000 ? "kMGTPE" : "KMGTPE").charAt (exp - 1) + (unit === 1000 ? "" : "i") + 'B';
    return (bytes / Math.pow (unit, exp)).toFixed (1) + pre;
}

[ 0, 27, 999, 1000, 1023, 1024, 1728, 110592, 7077888, 
  452984832, 28991029248, 1855425871872, 9223372036854775807].forEach (
    function (v) { console.log (v, byteCount (v), byteCount (v, 1024)); });

/* Displays :    
0 "0 B" "0 B"
27 "27 B" "27 B"
999 "999 B" "999 B"
1000 "1.0 kB" "1000 B"
1023 "1.0 kB" "1023 B"
1024 "1.0 kB" "1.0 KiB"
1728 "1.7 kB" "1.7 KiB"
110592 "110.6 kB" "108.0 KiB"
7077888 "7.1 MB" "6.8 MiB"
452984832 "453.0 MB" "432.0 MiB"
28991029248 "29.0 GB" "27.0 GiB"
1855425871872 "1.9 TB" "1.7 TiB"
9223372036854776000 "9.2 EB" "8.0 EiB" */

Note the Java version results table has an error displaying 7.1 KB instead of 7.1 MB

Sign up to request clarification or add additional context in comments.

Comments

0

There's now a couple of pretty nice Humanize libraries for JS, I'd recommend you have a look at:

HubSpot/Humanize Plus

There's also https://github.com/taijinlee/humanize if you'd like to take a look.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.