Байты, килобайты и терабайты

Опубликовано в QLua

Очень короткая функция для форматирования размера файла в человеко-читабельный вид.

 

local math = require "math"
function formatbytesize(bytes)
local l10 = math.log10(bytes)
l10 = math.floor(l10 / 3)

return string.format("% 20.0f : % 20.3f %s",bytes,bytes / 10^(l10*3), ({"B", "KB", "MB", "GB", "TB", "PB"})[l10+1])
end
print( formatbytesize(1) )
print( formatbytesize(12) )
print( formatbytesize(123) )
print( formatbytesize(1234) )
print( formatbytesize(12345) )
print( formatbytesize(123456) )
print( formatbytesize(1234567) )
print( formatbytesize(12345678) )
print( formatbytesize(123456789) )
print( formatbytesize(1234567890) )
print( formatbytesize(12345678901) )
print( formatbytesize(123456789012) )
print( formatbytesize(1234567890123) )
print( formatbytesize(12345678901234) )
print( formatbytesize(123456789012345) )
print( formatbytesize(1234567890123456) )
print( formatbytesize(12345678901234567) )
print( formatbytesize(123456789012345678))

Запускаем. Результат:

                  1 : 1.000 B
12 : 12.000 B
123 : 123.000 B
1234 : 1.234 KB
12345 : 12.345 KB
123456 : 123.456 KB
1234567 : 1.235 MB
12345678 : 12.346 MB
123456789 : 123.457 MB
1234567890 : 1.235 GB
12345678901 : 12.346 GB
123456789012 : 123.457 GB
1234567890123 : 1.235 TB
12345678901234 : 12.346 TB
123456789012345 : 123.457 TB
1234567890123456 : 1.235 PB
12345678901234566 : 12.346 PB
123456789012345680 : 123.457 PB

Добавить комментарий


Защитный код
Обновить

Архив QLua