RpcInvestigator/Util/Formatting.cs

44 lines
1.1 KiB
C#

//
// Copyright (c) 2022-present, Trail of Bits, Inc.
// All rights reserved.
//
// This source code is licensed in accordance with the terms specified in
// the LICENSE file found in the root directory of this source tree.
//
using System;
namespace RpcInvestigator.Util
{
internal static class Formatting
{
static readonly string[] SizeSuffixes = { "B", "KB", "MB", "GB" };
public static string InfoUnit(dynamic Value, int DecimalPlaces = 2)
{
if (!decimal.TryParse(Value.ToString(), out decimal value))
{
return "NaN!";
}
if (value > int.MaxValue)
{
return "NaN!";
}
else if (value < 0)
{
return "-" + InfoUnit(-value, DecimalPlaces);
}
int i = 0;
while (Math.Round(value, DecimalPlaces) >= 1000)
{
value /= 1024;
i++;
}
return string.Format("{0:n" + DecimalPlaces + "} {1}", value, SizeSuffixes[i]);
}
}
}