Example #1
0
        private ActionResult FromShortBytes(long quantity, ByteMultiple multiple)
        {
            ShortByteSize calculatedSize;

            switch (multiple)
            {
            case ByteMultiple.Byte:
                calculatedSize = ShortByteSize.FromBytes(quantity);
                break;

            case ByteMultiple.KiloByte:
                calculatedSize = ShortByteSize.FromKiloBytes(quantity);
                break;

            case ByteMultiple.MegaByte:
                calculatedSize = ShortByteSize.FromMegaBytes(quantity);
                break;

            case ByteMultiple.GigaByte:
                calculatedSize = ShortByteSize.FromGigaBytes(quantity);
                break;

            case ByteMultiple.TeraByte:
                calculatedSize = ShortByteSize.FromTeraBytes(quantity);
                break;

            case ByteMultiple.PetaByte:
                calculatedSize = ShortByteSize.FromPetaBytes(quantity);
                break;

            default:
                calculatedSize = ShortByteSize.FromBits(quantity);
                break;
            }

            var viewModel = new ByteCalculatorViewModel();

            viewModel.Results.Add(ByteMultiple.Bit.ToString(), calculatedSize.Bits.ToString());
            viewModel.Results.Add(ByteMultiple.Byte.ToString(), calculatedSize.Bytes.ToString());
            viewModel.Results.Add(ByteMultiple.KiloByte.ToString(), calculatedSize.KiloBytes.ToString());
            viewModel.Results.Add(ByteMultiple.MegaByte.ToString(), calculatedSize.MegaBytes.ToString());
            viewModel.Results.Add(ByteMultiple.GigaByte.ToString(), calculatedSize.GigaBytes.ToString());
            viewModel.Results.Add(ByteMultiple.TeraByte.ToString(), calculatedSize.TeraBytes.ToString());
            viewModel.Results.Add(ByteMultiple.PetaByte.ToString(), calculatedSize.PetaBytes.ToString());

            return(this.PartialView("_CalculatorResults", viewModel));
        }
            /// <summary>Processes a file size by converting it to the appropriate prefix.</summary>
            /// <param name="bytes">The file size in bytes.</param>
            /// <param name="byteMultiple">The multiple of bytes.</param>
            /// <returns>The converted and formatted file size.</returns>
            public static string Process(long bytes, ByteMultiple byteMultiple)
            {
                decimal roundingBytes = bytes;

                int multiple = 0;

                switch (byteMultiple)
                {
                case ByteMultiple.Binary:
                    multiple = 1024;

                    break;

                case ByteMultiple.Decimal:
                    multiple = 1000;

                    break;
                }

                int prefixCounter = 0;

                while (Math.Round(roundingBytes / multiple) >= 1)
                {
                    roundingBytes /= multiple;

                    ++prefixCounter;
                }

                roundingBytes = Math.Round(roundingBytes, 0);

                CultureInfo currentCultureInfo = Thread.CurrentThread.CurrentCulture;

                string prefix;

                switch (byteMultiple)
                {
                case ByteMultiple.Binary:
                    if (prefixCounter == 0)
                    {
                        prefix = " B";
                    }
                    else if (prefixCounter == 1)
                    {
                        prefix = " KiB";
                    }
                    else
                    {
                        prefix = " " + Prefixes[prefixCounter] + "iB";
                    }

                    break;

                case ByteMultiple.Decimal:
                    if (prefixCounter == 0)
                    {
                        prefix = " B";
                    }
                    else
                    {
                        prefix = " " + Prefixes[prefixCounter] + "B";
                    }

                    break;

                default:
                    prefix = string.Empty;

                    throw new InvalidEnumArgumentException(byteMultiple.ToString());
                }

                return(roundingBytes.ToString(currentCultureInfo) + prefix);
            }