baseconvert

Converts numbers to a specified base between 2 and 36, for use in templates such as }, }, }, etc.

{{i}} Документація модуля]

Example usage:

local BaseConvert = require('Module:BaseConvert') BaseConvert.convert({n = 14600926, base = 16}) -- returns 'DECADE' 

Arguments:

  • n - (required) the number to be converted, as a string. It may be a number instead, if the input base is 10.
  • base - (required) the base to which the number should be converted. May be between 2 and 36, inclusive.
  • from - the base of the input. Defaults to 10 (or 16 if the input has a leading '0x'). Note that bases other than 10 are not supported if the input has a fractional part.
  • precision - number of digits to be rendered after the radix point. Trailing zeros will be added if needed. If not specified, however many digits are needed will be shown, up to 10.
  • width - minimum number of digits to be rendered before the radix point. Leading zeros will be added if needed.
  • default - Value to return if n is empty or non-numeric. Defaults to the value of n.
  • prefix / suffix - wikitext to add before/after the returned result. Will not be added if n is empty or non-numeric. For example, you might use a prefix of 0x when converting to hex, or a suffix of 8 when converting to octal.
local p = {}  local digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'  function normalizeFullWidthChars(s)     return mw.ustring.gsub(s, '[!-~]', function(s)          return mw.ustring.char(mw.ustring.codepoint(s, 1) - 0xFEE0)      end)     end  function _convert(n, base, from, precision, width, default, prefix, suffix)     n = '' .. n   -- convert to a string          -- strip off any leading '0x' (unless x is a valid digit in the input base)     from = tonumber(from)     if not from or from < 34 then         local c         n, c = n:gsub('^(-?)0[Xx]', '%1')         if c > 0 and not from then from = 16 end     end      -- check for a negative sign. Do this while the input is still in string form,     -- because tonumber doesn't support negative numbers in non-10 bases.     local sign = ''     local c     n, c = n:gsub('^-', '')     if c > 0 then sign = '-' end          -- replace any full-width Unicode characters in the string with their ASCII equivalents     n = normalizeFullWidthChars(n)          -- handle scientific notation with whitespace around the 'e' e.g. '5 e7'     n = n:gsub('%s*[eE]%s*', 'e')          from = from or 10     local num = tonumber(n, from)     base = tonumber(base)     precision = tonumber(precision)     width = tonumber(width)          if not num or not base then return default or n end          local i, f = math.modf(num)      local t = {}     repeat         local d = (i % base) + 1         i = math.floor(i / base)         table.insert(t, 1, digits:sub(d, d))     until i == 0     while #t < (width or 0) do         table.insert(t, 1, '0')      end     local intPart = table.concat(t, '')          -- compute the fractional part     local tf = {}     while f > 0 and #tf < (precision or 10) do         f = f * base         i, f = math.modf(f)         table.insert(tf, digits:sub(i + 1, i + 1))     end          -- add trailing zeros if needed     if precision and #tf < precision then         for i = 1, precision - #tf do             table.insert(tf, '0')          end     end      fracPart = table.concat(tf, '')          -- remove trailing zeros if not needed     if not precision then         fracPart = fracPart:gsub('0*$', '')     end          -- add the radix point if needed     if #fracPart > 0 then         fracPart = '.' .. fracPart     end          return (prefix or '') .. sign .. intPart .. fracPart .. (suffix or '') end  function p.convert(frame)     -- Allow for invocation via #invoke or directly from another module     local args     if frame == mw.getCurrentFrame() then         args = frame.args     else         args = frame     end          local n = args.n     local base = args.base     local from = args.from     local precision = args.precision     local width = args.width     local default = args.default     local prefix = args.prefix     local suffix = args.suffix     return _convert(n, base, from, precision, width, default, prefix, suffix) end  return p 

Tags:

Шаблон:BinaryШаблон:HexadecimalШаблон:Octal

🔥 Trending searches on Wiki Українська:

СінгапурРіпак169-й навчальний центр (Україна)ChatGPTНомерні знаки УкраїниВікова структура населення УкраїниТуберкульозШевченківський район (Харків)Стародавній РимБузок32-га окрема механізована бригада (Україна)RedTubeТоталітаризмСковорода Григорій СавичХристиянствоЧервона книга УкраїниМавка. Лісова пісняРадіоелектронна боротьбаСтолипінська реформаЄрмак Андрій БорисовичСписок країн за населеннямОй у лузі червона калинаОлешківські піскиЗолоті ворота (Київ)КиївЕкономіка УкраїниГора між нами (фільм)Синій птах (п'єса)Чорнобильська катастрофаСьоґун (мінісеріал, 2024)Тичина Павло ГригоровичАн-225 «Мрія»Монгольська навала на РусьЗапорожці (картина)Динамо (Київ)ПенісУкраїнська діаспораВірусФах (повість)Світова спадщина ЮНЕСКОДонцов Дмитро ІвановичІвано-Франківська областьПавло ПолуботокЯпоніяМінський протоколКраматорськКармен МаураЛіверпуль (футбольний клуб)2С22 «Богдана»Українські політичні партії (до 1922 року)ПокровськБалицький Євген ВіталійовичРозпад СРСРXXXЕмпатіяДуров Павло ВалерійовичРєпін Ілля ЮхимовичTikTokBBC World ServiceМарія-ТерезіяЧорнобильУкраїнська народна партія (1902)Білецький Андрій ЄвгенійовичІрландіяСонцеХронологія російського вторгнення в Україну (з 2022)Мітоз128-ма окрема гірсько-штурмова бригада (Україна)ХолодокАнна АлхімЕйфелева вежаКревська уніяПромислова революціяСодоль Юрій ІвановичУкраїнська православна церква (Московський патріархат)ГрузіяПісенний конкурс Євробачення 2024🡆 More