[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と表示します。


▼ページトップへ