/// <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()));
        }