Hi Gamepedia users and contributors! Please complete this survey to help us learn how to better meet your needs in the future. We have one for editors and readers. This should only take about 7 minutes!

Module:Convert base

From Minecraft Wiki
Jump to: navigation, search
[view | edit | history | purge]DocumentationJump to code ↴

This module allows any number base to be converted to any other number base up to base 15.

It provides 3 convenience functions: fromDec, fromHex, and fromBin, for converting from decimal, hexadecimal, and binary, to any other base; and one main function: fromBase, for everything else.

See also

[view | edit | history | purge]The above documentation is transcluded from Module:Convert base/doc.
local p = {}
function p.fromDec( f )
	local args = f.args or f
	local base = tonumber( args[2] ) or 16
	local dec = tonumber( args[1] ) or 0
	
	if base == 10 or dec == 0 then
		return dec
	elseif base == 16 then
		return string.format( '%X', dec )
	else
		local chars = '0123456789ABCDEF'
		local pos
		local out = ''
		while dec > 0 do
			pos = math.mod( dec, base ) + 1
			dec = math.floor( dec / base )
			out = string.sub( chars, pos, pos ) .. out
		end
		return out
	end
end

function p.fromBase( f )
	local args = f.args or f
	local fromBase = tonumber( args[3] ) or 10
	local toBase = tonumber( args[2] ) or 16
	local dec = tonumber( args[1], fromBase ) or 0
	return p.fromDec{ dec, toBase }
end

function p.fromHex( f )
	return p.fromBase{ f.args[1], f.args[2], 16 }
end

function p.fromBin( f )
	return p.fromBase{ f.args[1], f.args[2], 2 }
end
return p