C# 转换字节大小、长度, 根据字节大小范围返回KB, MB, GB自适长度
using System; using System.IO; namespace ConsoleApp19 { class Program { static void Main(string[] args) { Console.WriteLine("1024*5 {0}", FileSizeString(1024L * 5L));// 5 KB Console.WriteLine("1024*1024*5 {0}", FileSizeString(1024L * 1024L * 5L));// 5 MB Console.WriteLine("1024*1024*1024*5 {0}", FileSizeString(1024L * 1024L * 1024L * 5L));// 5 GB Console.WriteLine("1024*1024*1024*1024*5 {0}", FileSizeString(1024L * 1024L * 1024L * 1024L * 5L));// 5 TB Console.WriteLine("1024*1024*1024*1024*1024*5 {0}", FileSizeString(1024L * 1024L * 1024L * 1024L * 1024L * 5L));// 5 PB Console.WriteLine("1024*1024*1024*1024*1024*1024*5 {0}", FileSizeString(1024L * 1024L * 1024L * 1024L * 1024L * 1024L * 5L));// 5 EB Console.Read(); } /// <summary> /// 转换字节大小、长度, 根据字节大小范围返回KB, MB, GB自适长度 /// </summary> /// <param name="length">传入字节大小</param> /// <returns></returns> public static string FileSizeString(long length) { int byteConversion = 1024; double bytes = Convert.ToDouble(length); // 超过EB的单位已经没有实际转换意义了, 太大了, 忽略不用 if (bytes >= Math.Pow(byteConversion, 6)) // EB { return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 6), 2), " EB"); } if (bytes >= Math.Pow(byteConversion, 5)) // PB { return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 5), 2), " PB"); } else if (bytes >= Math.Pow(byteConversion, 4)) // TB { return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 4), 2), " TB"); } else if (bytes >= Math.Pow(byteConversion, 3)) // GB { return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 3), 2), " GB"); } else if (bytes >= Math.Pow(byteConversion, 2)) // MB { return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 2), 2), " MB"); } else if (bytes >= byteConversion) // KB { return string.Concat(Math.Round(bytes / byteConversion, 2), " KB"); } else // Bytes { return string.Concat(bytes, " Bytes"); } } } }