1

所以我们都知道下面的代码会返回一个long:

DriveInfo myDrive = new DriveInfo("C:\\");
long size = myDrive.TotalSize;
Console.WriteLine("Drive Size is: {0}", size);

输出将是这样的:

驱动器大小为:114203439104

所以我认为这意味着驱动器的总大小约为 114 GB。

但是,我想将其转换为以下格式:

114.2 MB

有没有一种真正快速简便的方法来做到这一点?

提前致谢。

4

4 回答 4

3

我认为那是 114 GB,但是嘿。无论如何,我会为此编写一个辅助函数。就像是...

public string GetSize(long size)
{
   string postfix = "Bytes";
   long result = size;
   if(size >= 1073741824)//more than 1 GB
   {
      result = size / 1073741824;
      postfix = "GB";
   }
   else if(size >= 1048576)//more that 1 MB
   {
      result = size / 1048576;
      postfix = "MB";
   }
   else if(size >= 1024)//more that 1 KB
   {
      result = size / 1024;
      postfix = "KB";
   }

   return result.ToString("F1") + " " + postfix;
}

编辑:正如所指出的,我完全忘记处理尺寸(代码已修改)

于 2011-08-30T16:35:08.747 回答
2

这是我正在使用的片段:

    public static string FormatBytesToHumanReadable(long bytes)
    {
        if (bytes > 1073741824)
            return Math.Ceiling(bytes / 1073741824M).ToString("#,### GB");
        else if (bytes > 1048576)
            return Math.Ceiling(bytes / 1048576M).ToString("#,### MB");
        else if (bytes >= 1) 
            return Math.Ceiling(bytes / 1024M).ToString("#,### KB");
        else if (bytes < 0)
            return "";
        else
            return bytes.ToString("#,### B");
    }
于 2011-08-30T16:37:17.263 回答
0

是的。重复除以 1024。

var kb = size/1024;
var mb = kb/1024;
于 2011-08-30T16:32:06.420 回答
0

我只想补充一点,如果您谈论的是驱动器大小而不是其他大小,请注意 HDD/SDD 硬件供应商使用 1000 KB,而不是 1024。这就是为什么标记为 400Gb 的 HDD 将显示为大多数程序为 372.53GB。确保向用户提供他期望的信息。

于 2011-08-30T16:42:14.703 回答