byteからKiB, MiB, GiBに変換
KiB(2^10)、MiB(2^20)、GiB(2^30)、TiB(2^40) ... なので階乗演算子を使うと分かりやすい。計算式が違うだけで10進数を16進数、2進数に変換とやっていることは大体同じ。 ▶Run code:ruby
def b2k(byte, n)
(byte / (2 ** n).to_f).round(2)
end
def byte_to_kib(byte)
puts "#{byte} byte"
puts "#{b2k(byte, 10)} KiB"
puts "#{b2k(byte, 20)} MiB"
puts "#{b2k(byte, 30)} GiB"
end
byte_to_kib(1024 * 1024 * 1024 * 2)
byte_to_kib(5_678_901_234)