namespace ATxCommon
{
    public static class Conv
    {
        public const int MegaBytes = 1024 * 1024;

        /// <summary>
        /// Convert bytes into a human-readable string with the appropriate suffix (up to TB).
        /// </summary>
        /// <param name="numBytes">The number of bytes.</param>
        /// <returns>A formatted string with the size showing one decimal.</returns>
        public static string BytesToString(long numBytes) {
            string[] suffixes = {"Bytes", "KB", "MB", "GB", "TB"};
            var order = 0;
            while (numBytes >= 1024 && order < suffixes.Length - 1) {
                order++;
                numBytes /= 1024;
            }
            return $"{numBytes:0.#} {suffixes[order]}";
        }
    }
}