private static string FormatUnitBase10(double formattedSize, string unit, UnitStyle format) { if (formattedSize != 1.0D) { unit += "s"; } if (format == UnitStyle.Smart || format == UnitStyle.Abbreviated) { return(unit[0] + "B"); } else if (format == UnitStyle.Full) { return(unit); } else if (format == UnitStyle.FullLower) { return(unit.ToLowerInvariant()); } else if (format == UnitStyle.AbbreviatedLower) { return(char.ToLowerInvariant(unit[0]) + "b"); } throw new ArgumentException(); }
public static string Format(long size, UnitBase @base = UnitBase.Base2, UnitStyle format = UnitStyle.Smart) { bool neg = size < 0; ulong fmt_size = size switch { // Math.Abs(long.MinValue) is out of range for long so we handle it separately long.MinValue => ((ulong)long.MaxValue) + 1, < 0 => (ulong)Math.Abs(size), _ => (ulong)size, }; var formatted = Format(fmt_size, @base, format); return(neg ? "-" + formatted : formatted); }
static private string PrintBytes(ulong size, UnitStyle format) { switch (format) { case UnitStyle.Abbreviated: return($"{size} B"); case UnitStyle.AbbreviatedLower: return($"{size} b"); case UnitStyle.Full: return(size == 1 ? $"{size} Byte" : $"{size} Bytes"); case UnitStyle.Smart: case UnitStyle.FullLower: return(size == 1 ? $"{size} byte" : $"{size} bytes"); } throw new ArgumentException(); }
public static string Format(ulong size, UnitBase @base = UnitBase.Base2, UnitStyle format = UnitStyle.Smart) { if (@base == UnitBase.Base2) { var searchIndex = Array.BinarySearch(Base2Map, new FormattingRule(size, null), new FormattingRuleComparer()); if (searchIndex < 0) { searchIndex = ~searchIndex; return(Base2Map[searchIndex].FormatDelegate(size, @base, format)); } return(Base2Map[searchIndex + 1].FormatDelegate(size, @base, format)); } else { var searchIndex = Array.BinarySearch(Base10Map, new FormattingRule(size, null), new FormattingRuleComparer()); if (searchIndex < 0) { searchIndex = ~searchIndex; return(Base10Map[searchIndex].FormatDelegate(size, @base, format)); } return(Base10Map[searchIndex + 1].FormatDelegate(size, @base, format)); } }
public string Format(UnitBase @base = UnitBase.Base2, UnitStyle format = UnitStyle.Smart) { return(Format(TotalBytes, @base, format)); }