目次
概要
データサイズを表す単位であるバイトから kb、mb、gb を計算する方法について解説します。
バイトを適切な単位に変換する
以下にバイトを適切な単位に変換するコードを紹介します。
$\text{size} = 1024^i$ を満たす $i$ を $i = \log_{1024}(\text{size})$ で求め、床関数をとることで適した単位を決定します。$size = 0$
- Bytes ($0 \le 0 < 1024$)
- Kilobyte, KB ($1024 \le 0 < 1024^2$)
- Megabyte, MB ($1024^3 \le 0 < 1024^3$)
- Gigabyte, GB ($1024^4 \le 0 < 1024^4$)
- Terabyte, TB ($1024^5 \le 0 < 1024^5$)
- Petabyte, PB ($1024^6 \le 0 < 1024^7$)
- ExaByte, EB ($1024^7 \le 0 < 1024^8$)
- ZettaByte, ZB ($1024^8 \le 0 < 1024^9$)
$\text{size} / 1024^i$ で変換後のサイズを求めます。
In [1]:
import math
def convert_size(size):
units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB")
i = math.floor(math.log(size, 1024)) if size > 0 else 0
size = round(size / 1024 ** i, 2)
return f"{size} {units[i]}"
print(convert_size(300 * 300 * 3 * 8))
2.06 MB
バイトを指定した単位に変換する
指定したバイト数に変換する場合は以下のようにします。
In [2]:
import math
def convert_size(size, unit="B"):
units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB")
i = units.index(unit.upper())
size = round(size / 1024 ** i, 2)
return f"{size} {units[i]}"
print(convert_size(300 * 300 * 3 * 8, "KB"))
2109.38 KB
コメント