public static string ToUnitString(FileSizeMode mode, FileSizeUnit unit) { if (mode == FileSizeMode.Binary && unit != FileSizeUnit.Bytes) { var str = unit.ToString(); var index = str.IndexOf('B'); return(str.Insert(index, "i")); } else if (mode == FileSizeMode.SI) { return(unit.ToString()); } return(unit.ToString()); }
/// <summary> /// 获取文件大小 /// </summary> /// <param name="length">长度:字节</param> /// <param name="unit">单位,枚举:FileSizeUnit</param> /// <returns></returns> public static string GetFileSize(decimal length, FileSizeUnit unit = FileSizeUnit.KB) { decimal num = 0m; switch (unit) { case FileSizeUnit.TB: num = Math.Round((decimal)(length / (1024m * 1024m * 1024m * 1024m)), 2, MidpointRounding.AwayFromZero); break; case FileSizeUnit.GB: num = Math.Round((decimal)(length / (1024m * 1024m * 1024m)), 2, MidpointRounding.AwayFromZero); break; case FileSizeUnit.MB: num = Math.Round((decimal)(length / (1024m * 1024m)), 2, MidpointRounding.AwayFromZero); break; case FileSizeUnit.KB: default: num = Math.Round((decimal)(length / 1024m), 2, MidpointRounding.AwayFromZero); break; } return(num.ToString() + unit.ToString()); }
/// <summary>Converts a file-size in the give unit to a different unit.</summary> /// <param name="sourceUnit">The source unit the 'value' is currently in.</param> /// <param name="targetUnit">The unit to convert to.</param> /// <param name="value">The file-size value to convert.</param> public static double ConvertTo(this FileSizeUnit sourceUnit, FileSizeUnit targetUnit, double value) { // Setup initial conditions. var bytes = sourceUnit.ToBytes(value); // Perform conversion. const int multiplier = 1024; if (targetUnit == FileSizeUnit.Byte) return bytes; if (targetUnit == FileSizeUnit.Kilobyte) return bytes / multiplier; if (targetUnit == FileSizeUnit.Megabyte) return bytes / multiplier / multiplier; if (targetUnit == FileSizeUnit.Gigabyte) return bytes / multiplier / multiplier / multiplier; if (targetUnit == FileSizeUnit.Terabyte) return bytes / multiplier / multiplier / multiplier / multiplier; throw new NotSupportedException(targetUnit.ToString()); }
public static string ToRQLString(this FileSizeUnit unit) { return(unit.ToString()); }
/// <summary> /// 将B单位转换为1024内的长度 /// </summary> /// <param name="fileSizeForBytes">文件字节长度</param> /// <param name="fileSizeUnit">单位类型</param> /// <returns></returns> public static string ChangeFileSizeUnit(this long fileSizeForBytes, FileSizeUnit fileSizeUnit) { return($"{(fileSizeForBytes >> (int)fileSizeUnit)}{fileSizeUnit.ToString()}"); }