<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.tokusatsus.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ABaseConvert</id>
	<title>Módulo:BaseConvert - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tokusatsus.com/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ABaseConvert"/>
	<link rel="alternate" type="text/html" href="https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:BaseConvert&amp;action=history"/>
	<updated>2026-07-05T10:53:24Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:BaseConvert&amp;diff=2506&amp;oldid=prev</id>
		<title>Tavoraadmin: Importando predefinição/módulo da Wikipédia em português para manter layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.tokusatsus.com/index.php?title=M%C3%B3dulo:BaseConvert&amp;diff=2506&amp;oldid=prev"/>
		<updated>2026-07-05T05:20:46Z</updated>

		<summary type="html">&lt;p&gt;Importando predefinição/módulo da Wikipédia em português para manter layout&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local digits = &amp;#039;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function normalizeFullWidthChars(s)&lt;br /&gt;
	return mw.ustring.gsub(s, &amp;#039;[！-～]&amp;#039;, function(s)&lt;br /&gt;
		return mw.ustring.char(mw.ustring.codepoint(s, 1) - 0xFEE0)&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _convert(n, base, from, precision, width, default, prefix, suffix)&lt;br /&gt;
	n = tostring(n)&lt;br /&gt;
&lt;br /&gt;
	-- retira qualquer &amp;quot;0x&amp;quot; inicial (a menos que x seja um dígito válido na base de entrada)&lt;br /&gt;
	from = tonumber(from)&lt;br /&gt;
	if not from or from &amp;lt; 34 then&lt;br /&gt;
		local c&lt;br /&gt;
		n, c = n:gsub(&amp;#039;^(-?)0[Xx]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		if c &amp;gt; 0 and not from then from = 16 end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- verifica se há um sinal negativo. Faz isso enquanto a entrada ainda estiver na forma de string,&lt;br /&gt;
	-- porque tonumber não suporta números negativos em bases diferentes de 10.&lt;br /&gt;
	local sign = &amp;#039;&amp;#039;&lt;br /&gt;
	local c&lt;br /&gt;
	n, c = n:gsub(&amp;#039;^-&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	if c &amp;gt; 0 then sign = &amp;#039;-&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	-- substitui quaisquer caracteres Unicode de largura total na string por seus equivalentes no Código padrão americano para troca de informações (C.P.A.T.I. – A.S.C.I.I.)&lt;br /&gt;
	n = normalizeFullWidthChars(n)&lt;br /&gt;
&lt;br /&gt;
	-- lida com notação científica com espaço em branco ao redor do &amp;quot;e*, por exemplo &amp;quot;5 e7&amp;quot;&lt;br /&gt;
	n = n:gsub(&amp;#039;%s*[eE]%s*&amp;#039;, &amp;#039;e&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	from = from or 10&lt;br /&gt;
	local num = tonumber(n, from)&lt;br /&gt;
	base = tonumber(base)&lt;br /&gt;
	precision = tonumber(precision)&lt;br /&gt;
	width = tonumber(width)&lt;br /&gt;
&lt;br /&gt;
	if not num or not base then return default or n end&lt;br /&gt;
&lt;br /&gt;
	local i, f = math.modf(num)&lt;br /&gt;
&lt;br /&gt;
	local t = {}&lt;br /&gt;
	repeat&lt;br /&gt;
		local d = (i % base) + 1&lt;br /&gt;
		i = math.floor(i / base)&lt;br /&gt;
		table.insert(t, 1, digits:sub(d, d))&lt;br /&gt;
	until i == 0&lt;br /&gt;
	while #t &amp;lt; (width or 0) do&lt;br /&gt;
		table.insert(t, 1, &amp;#039;0&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local intPart = table.concat(t, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- calcula a parte fracionária&lt;br /&gt;
	local tf = {}&lt;br /&gt;
	while f &amp;gt; 0 and #tf &amp;lt; (precision or 10) do&lt;br /&gt;
		f = f * base&lt;br /&gt;
		i, f = math.modf(f)&lt;br /&gt;
		table.insert(tf, digits:sub(i + 1, i + 1))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- adiciona zeros à direita, se necessário&lt;br /&gt;
	if precision and #tf &amp;lt; precision then&lt;br /&gt;
		for i = 1, precision - #tf do&lt;br /&gt;
			table.insert(tf, &amp;#039;0&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local fracPart = table.concat(tf, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- remove is zeros à direita, se não forem necessários&lt;br /&gt;
	if not precision then&lt;br /&gt;
		fracPart = fracPart:gsub(&amp;#039;0*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- adiciona o ponto de raiz, se necessário. Obs.: Aqui podemos modificar o sinal para decimais (o padrão em inglês é &amp;quot;.&amp;quot; e em português é &amp;quot;,&amp;quot;) na saída.&lt;br /&gt;
	if #fracPart &amp;gt; 0 then&lt;br /&gt;
		fracPart = &amp;#039;.&amp;#039; .. fracPart&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return (prefix or &amp;#039;&amp;#039;) .. sign .. intPart .. fracPart .. (suffix or &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert(frame)&lt;br /&gt;
	-- Permite a invocação via #invoke ou diretamente de outro módulo&lt;br /&gt;
	local args&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		args = frame.args&lt;br /&gt;
	else&lt;br /&gt;
		args = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local n = args.n&lt;br /&gt;
	local base = args.base&lt;br /&gt;
	local from = args.from&lt;br /&gt;
	local precision = args.precision&lt;br /&gt;
	local width = args.width&lt;br /&gt;
	local default = args.default&lt;br /&gt;
	local prefix = args.prefix&lt;br /&gt;
	local suffix = args.suffix&lt;br /&gt;
	return _convert(n, base, from, precision, width, default, prefix, suffix)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
setmetatable(p, {&lt;br /&gt;
	__index = function(t, k)&lt;br /&gt;
		local from, base = k:match(&amp;#039;^([0-9]+)to([0-9]+)$&amp;#039;)&lt;br /&gt;
		if not from then return nil end&lt;br /&gt;
		return function(frame)&lt;br /&gt;
			local args = frame.args&lt;br /&gt;
			return _convert(mw.text.trim(args[1]), base, from, args.precision, args.width,&lt;br /&gt;
				args.default, args.prefix, args.suffix)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Tavoraadmin</name></author>
	</entry>
</feed>