1

したがって、次のコードが long を返すことは誰もが知っています。

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

出力は次のようになります。

ドライブのサイズ: 114203439104

これは、ドライブの合計サイズが約 114 ギガバイトであることを意味すると思います。

ただし、これを次の形式にしたいと考えています。

114.2メガバイト

これを行うための本当に迅速で簡単な方法はありますか?

前もって感謝します。

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 ハードウェア ベンダーが 1024 ではなく 1000 を KB に使用していることに注意してください。そのため、400Gb とマークされた HDD はほとんどのプログラムで 372.53GB。ユーザーが期待する情報を必ず提供してください。

于 2011-08-30T16:42:14.703 に答える