/// <summary> /// Returns a string that represents a number of bytes in a human-readable format. /// </summary> /// <param name="value">The System.UInt64 value, in bytes.</param> public static string BytesToString(this UInt64 value, UnitOfInformationPrefix prefix) { var divider = (UInt64)prefix; String[] unitSymbols; switch (prefix) { case UnitOfInformationPrefix.Binary: unitSymbols = _binaryUnitSymbols; break; case UnitOfInformationPrefix.Decimal: unitSymbols = _decimalUnitSymbols; break; case UnitOfInformationPrefix.None: default: return value + " B"; } Double divideValue = 1; UInt64 compareValue = divider; for (var i = 0; i < unitSymbols.Length; i++) { if (value < compareValue) return String.Format(CultureInfo.InvariantCulture, "{0:0.#} {1}", value / divideValue, unitSymbols[i]); compareValue = compareValue * divider; divideValue = divideValue * divider; } return String.Format(CultureInfo.InvariantCulture, "{0:0.#} {1}", value / divideValue, unitSymbols.Last()); }
/// <summary> /// Returns a string that represents a number of bytes in a human-readable format. /// </summary> /// <param name="value">The System.UInt64 value, in bytes.</param> public static string BytesToString(this UInt64 value, UnitOfInformationPrefix prefix) { var divider = (UInt64)prefix; String[] unitSymbols; switch (prefix) { case UnitOfInformationPrefix.Binary: unitSymbols = _binaryUnitSymbols; break; case UnitOfInformationPrefix.Decimal: unitSymbols = _decimalUnitSymbols; break; case UnitOfInformationPrefix.None: default: return(value + " B"); } Double divideValue = 1; UInt64 compareValue = divider; for (var i = 0; i < unitSymbols.Length; i++) { if (value < compareValue) { return(String.Format(CultureInfo.InvariantCulture, "{0:0.#} {1}", value / divideValue, unitSymbols[i])); } compareValue = compareValue * divider; divideValue = divideValue * divider; } return(String.Format(CultureInfo.InvariantCulture, "{0:0.#} {1}", value / divideValue, unitSymbols.Last())); }