Skip to content

Instantly share code, notes, and snippets.

@eit
Last active August 30, 2018 08:36
Show Gist options
  • Save eit/de256198f5d7489e5cd8e099e0db113c to your computer and use it in GitHub Desktop.
Save eit/de256198f5d7489e5cd8e099e0db113c to your computer and use it in GitHub Desktop.
no loops and handles both SI units and binary units
public static String humanReadableByteCount(long bytes, boolean si) {
int unit = si ? 1000 : 1024;
if (bytes < unit) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment