TECH BOX

Technology blog from Web Engineer

この記事は最終更新日から5年以上経過しているため正確ではないかもしれません

byteをKBやMBなど適切な単位に変換する

ファイルサイズなんかを表示するときは大抵バイト(byte)数をデータとして受け取ったりします。
小さいサイズなら問題ないですが数MBとかになるとバイトで書かれると読みづらいです。

そんなときに簡単に計算する方法があります。

各単位のバイト数を求める

計算を始める前に各単位をJSで簡単に求める方法です。

1KB = 1024byteとしたときにプログラムで簡単にKB〜TBをbyteにした時のbyte数を求めます。

const kb = 1024
const mb = Math.pow(kb, 2)
const kb = Math.pow(kb, 3)
const tb = Math.pow(kb, 4)

各単位は1024のべき乗で求めれば簡単です。
※ES6の場合はkb ** 2という書き方もできます

計算したいバイト数がどの単位にマッチするか

計算したいバイト数が各単位を超えていた時点のバイト数を取得します。
ついでに単位名も取得します。

let target = null
let unit = 'byte'

if (size >= tb) {
  target = tb
  unit = 'TB'
} else if (size >= mb) {
  target = mb
  unit = 'MB'
} else if (size >= kb) {
  target = kb
  unit = 'KB'
}

取得した単位のバイト数で割る

取得した単位のバイト数を割れば各単位の数値に変換されますが、そのままだと小数点以下が長くなるかもしれないので、小数点以下第二位まで求めます。

また、1024未満の場合はそのまま出力します。

const res = target !== null ? Math.floor((size / target) * 100) / 100 : size

// 単位を付けて出力
console.log(res + unit)

サンプル

CodePenにちょっとしたサンプルを作りました。

See the Pen unit change for byte size by Nobuyuki Kondo (@artprojectteam) on CodePen.0

普段必要ないことのほうが多いですが、たまに使うときに「どうやるんだっけかなー?」と考えてしまうのでこういうツールは作っておくと便利ですね。

GitHubにも関数化したものをアップしましたので参考までに。
JS Tips > バイトを適切な単位へ変換