public static Base2 Parse(string Value, Base2ParseMode ParseMode, bool Round)
{
var ret = new Base2();
var r = new System.Text.RegularExpressions.Regex(@"[A-Za-z]*$");
if (Value.EndsWith("bit", StringComparison.CurrentCultureIgnoreCase))
{
ret.Bits = Convert.ToUInt64(r.Replace(Value, ""));
}
if (Value.EndsWith("B", StringComparison.CurrentCultureIgnoreCase))
{
try { ret.Bytes = Convert.ToInt64(r.Replace(Value, "")); }
catch { Value += "B"; }
}
if (ParseMode == Base2ParseMode.Binary)
{
if (Value.EndsWith("KBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kibibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("KB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kibibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Mebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Mebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Mebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Mebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gibibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gibibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Tebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Tebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Tebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Tebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Pebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Pebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Pebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Pebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
}
if (ParseMode == Base2ParseMode.Scientific)
{
if (Value.EndsWith("KIBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kibibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("KIB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kibibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MIBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Mebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Mebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MIB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Mebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Mebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GIBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gibibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GIB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gibibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TIBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Tebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Tebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TIB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Tebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Tebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PIBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Pebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Pebibits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PIB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Pebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Pebibytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("KBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kilobits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kilobits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("KB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Kilobytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Kilobytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Megabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Megabits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("MB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Megabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Megabytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gigabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gigabits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("GB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Gigabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Gigabytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Terabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Terabits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("TB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Terabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Terabytes = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PBIT", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Petabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Petabits = Convert.ToDecimal(r.Replace(Value, ""));
}
if (Value.EndsWith("PB", StringComparison.CurrentCultureIgnoreCase))
{
if (Round)
ret.Petabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
else
ret.Petabytes = Convert.ToDecimal(r.Replace(Value, ""));
}
}
ret.parseMode = ParseMode;
return ret;
}