Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static readonly string [] SizeSuffixes =
- { "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
- static string SizeSuffix (ulong value, uint decimalPlaces = 1) {
- if (value == 0) { return string.Format ("{0:n" + decimalPlaces + "} bytes", 0); }
- // mag is 0 for bytes, 1 for KB, 2, for MB, etc.
- int mag = (int) Mathf.Log (value, 1024);
- // 1L << (mag * 10) == 2 ^ (10 * mag)
- // [i.e. the number of bytes in the unit corresponding to mag]
- decimal adjustedSize = (decimal) value / (1L << (mag * 10));
- // make adjustment when the value is large enough that
- // it would round up to 1000 or more
- if (System.Math.Round (adjustedSize, (int) decimalPlaces) >= 1000) {
- mag += 1;
- adjustedSize /= 1024;
- }
- return string.Format ("{0:n" + decimalPlaces + "} {1}",
- adjustedSize,
- SizeSuffixes [mag]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement