Module:NBlocks
From Hacks Guide Wiki
More actions
This is the approved revision of this page, as well as being the most recent.
Convert between Nintendo blocks and standard byte units.
Examples
| Wikitext | Result |
|---|---|
{{#invoke:NBlocks|blocks_to_bytes|16}} |
2097152 |
{{#invoke:NBlocks|blocks_to_kib|16}} |
2048 |
{{#invoke:NBlocks|blocks_to_mib|16}} |
2 |
{{#invoke:NBlocks|bytes_to_blocks|2097152}} |
16 |
{{#invoke:NBlocks|mib_to_blocks|2}} |
16 |
{{#invoke:NBlocks|format_bytes|786333696}} |
749.91 MiB |
local p = {}
local TITLE_ALIGN_SIZE = 0x8000
function roundup(num, align)
return math.ceil(num / align) * align
end
function p.raw_blocks_to_bytes(blocks)
return blocks * 128 * 1024
end
function p.raw_blocks_to_kib(blocks)
return blocks * 128
end
function p.raw_blocks_to_mib(blocks)
return blocks / 8
end
function p.raw_bytes_to_blocks(bytes)
return math.ceil(bytes / 1024 / 128)
end
function p.raw_mib_to_blocks(mib)
return math.ceil(mib * 8)
end
function get_display_unit(size)
if size >= 1024 * 1024 * 1024 then
return size / 1024 / 1024 / 1024, 'GiB'
elseif size >= 1024 * 1024 then
return size / 1024 / 1024, 'MiB'
elseif size >= 1024 then
return size / 1024, 'KiB'
else
return size, 'bytes'
end
end
function p.raw_format_bytes(bytes)
-- this needs to do bytes, kib, and gib too
local formatted_size, unit = get_display_unit(tonumber(bytes))
return string.format("%.2f", formatted_size) .. ' ' .. unit
end
function p.roundup_all_sizes_to_bytes(sizes)
total = 0
for i, v in ipairs(sizes) do
total = total + roundup(v, TITLE_ALIGN_SIZE)
end
return total
end
function p.blocks_to_bytes(frame)
return p.raw_blocks_to_bytes(frame.args[1])
end
function p.blocks_to_kib(frame)
return p.raw_blocks_to_kib(frame.args[1])
end
function p.blocks_to_mib(frame)
return p.raw_blocks_to_mib(frame.args[1])
end
function p.bytes_to_blocks(frame)
return p.raw_bytes_to_blocks(frame.args[1])
end
function p.mib_to_blocks(frame)
return p.raw_mib_to_blocks(frame.args[1])
end
function p.format_bytes(frame)
return p.raw_format_bytes(frame.args[1])
end
return p