[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と表示します。
▼ページトップへ