История изменений
Исправление unfo, (текущая версия) :
Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):
const
KB = 1024
MB = KB * KB
GB = MB * KB
TB = GB * KB
PB = TB * KB
proc formatBytesToReadableSize*(bytes: int): (float, string) =
let floatValue = bytes.float
case bytes
of bytes < KB:
(floatValue, "b")
of bytes < MB:
(bytes / KB, "KB")
of bytes < GB:
(bytes / MB, "MB")
of bytes < TB:
(bytes / GB, "GB")
of bytes < PB:
(bytes / TB, "TB")
else:
(floatValue, ".")
Исправление unfo, :
Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):
const
KB = 1024
MB = KB * KB
GB = MB * KB
TB = GB * KB
PB = TB * KB
proc formatBytesToReadableSize*(bytes: int): (float, string) =
let floatValue = bytes.float
case bytes
of bytes < KB:
(floatValue, "b")
of bytes < MB:
(floatValue / KB, "KB")
of bytes < GB:
(floatValue / MB, "MB")
of bytes < TB:
(floatValue / GB, "GB")
of bytes < PB:
(floatValue / TB, "TB")
else:
(floatValue, ".")
Исходная версия unfo, :
Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):
const
KB = 1024
MB = KB * KB
GB = MB * KB
TB = GB * KB
PB = TB * KB
EB = PB * KB
proc formatBytesToReadableSize*(bytes: int): (float, string) =
let floatValue = bytes.float
case bytes
of bytes < KB:
(floatValue, "b")
of bytes < MB:
(floatValue / KB, "KB")
of bytes < GB:
(floatValue / MB, "MB")
of bytes < TB:
(floatValue / GB, "GB")
of bytes < PB:
(floatValue / TB, "TB")
of bytes < EB:
(floatValue / PB, "PB")
else:
(floatValue, ".")