Bytes ~ PB까지 가능. (from AS3 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 문자열을 배열로 변환
function string:split(sep)
    local sep, fields = sep or ":", {}
    local pattern = string.format("([^%s]+)", sep)
    self:gsub(pattern, function(c) fields[#fields+1] = c end)
    return fields
end

-- Bytes를 파일 단위 텍스트로 변환
local function getFileUnitString(bytes, floatCount)
    if floatCount == nil or floatCount < 0 then floatCount = 0 end

    local units = { "bytes", "kb", "MB", "GB", "TB", "PB" }
    local num = math.floor( math.log( bytes ) / math.log( 1024 ) )
    local arr = tostring((bytes / math.pow(1024, math.floor(num)))):split(".")
    return ((arr[2] and floatCount > 0) and arr[1].."."..arr[2]:sub(1, floatCount) or arr[1])..units[num + 1]
end

print(getFileUnitString(15911789568, 2)) -- 14.81GB