[VC2010] ByteをMB等に変換する方法
◆概要
この資料は、ByteをMBやGB、TBに変換する関数を説明しています。
パソコンのメモリ量を取得してラベルに表示する場合など、取得したByte数をMBやGBなどに変換するときに便利な関数です。
第1引数:Byte数を表す数値(long型)
第2引数:小数点以下第何位まで表示するかを指定する数値。例えば、小数点第1位まで表示したいときは 1 を指定します。
public string FormatSize(long amt, int rounding) { /// <summary> /// ByteをKB, MB, GB...のような他の形式に変換する /// KB, MB, GB, TB, PB, EB, ZB or YB /// 第1引数:long型 /// 第2引数:小数点第何位まで表示するか /// </summary> if (amt >= Math.Pow(2, 80)) return Math.Round(amt / Math.Pow(2, 70), rounding).ToString() + " YB"; //yettabyte if (amt >= Math.Pow(2, 70)) return Math.Round(amt / Math.Pow(2, 70), rounding).ToString() + " ZB"; //zettabyte if (amt >= Math.Pow(2, 60)) return Math.Round(amt / Math.Pow(2, 60), rounding).ToString() + " EB"; //exabyte if (amt >= Math.Pow(2, 50)) return Math.Round(amt / Math.Pow(2, 50), rounding).ToString() + " PB"; //petabyte if (amt >= Math.Pow(2, 40)) return Math.Round(amt / Math.Pow(2, 40), rounding).ToString() + " TB"; //terabyte if (amt >= Math.Pow(2, 30)) return Math.Round(amt / Math.Pow(2, 30), rounding).ToString() + " GB"; //gigabyte if (amt >= Math.Pow(2, 20)) return Math.Round(amt / Math.Pow(2, 20), rounding).ToString() + " MB"; //megabyte if (amt >= Math.Pow(2, 10)) return Math.Round(amt / Math.Pow(2, 10), rounding).ToString() + " KB"; //kilobyte return amt.ToString() + " Bytes"; //byte }
◆使用例
次の例は、ボタンをクリックしたときにラベルにMBに変換して表示します。
private void btnConvert_Click(object sender, EventArgs e) { long byt = 1024000000; label1.Text=(FormatSize(byt, 2)); }
上記の例では、1024000000バイトを変換し、label1に976.56MBと表示します。
▼ページトップへ