バイトデータサイズをMBやKB単位に変換

画面にデータサイズを表示する際、MBやKBなどの単位を適度に変換して返すメソッドを自前で用意したのですが、
ホント無駄の多いこと多いこと…。


で、仕事でW2Box(オープンソース)を見てて、凄くすっきりまとまっていたコードを発見したので
嬉しさのあまり、元(PHP)からActionScript3に移植してみました。

//単位配列
private static var units:Array = [" B", " KB", " MB", " GB", " TB"];

//変換処理
public static function convertToFileSize(size:Number):String { 
    for (var i:int = 0; size > 1024; i++) { 
        size /= 1024;
    }
    return Math.round(size * 100) / 100 + units[i]; 
    //整数で返すなら以下でOK 
    //return Math.round(size) + utils[i];
}


内容は、単位の小さい順(B、KB、MB…)に配列を用意。
元の値が1024以下になるまで1024で割り続ける。
割った値 + 単位配列[ループインデックス]を返す。
割った分単位が上がっていくという仕組み。
ちなみに、上のコードでは「12.34 MB」みたいに小数第2位までの文字列を返すため、
100掛けて四捨五入して100割ってます。


これだけ。
つくづく自分で実装したコードが情けなくなったので、コッソリ消しました。