baseconvert

Преобразует число в систему с указанным основанием от 2 до 36.

Документация

Пример:

local BaseConvert = require('Module:BaseConvert') BaseConvert.convert({n = 14600926, base = 16}) -- возвращает 'DECADE' 

Аргументы:

  • n — (обязательный) преобразуемое число, строкой. Может быть числом, если исходное основание равно 10.
  • base — (обязательный) основание, в которое число должно быть преобразовано. Может быть от 2 до 36, включительно.
  • from — основание начального числа. По умолчанию 10 (или 16, если число начинается с '0x'). Основания больше 10 не поддерживаются, если в числе есть дробная часть.
  • precision — число цифр после точки. При необходимости будут добавлены нули. Если не указано, будет выведено необходимое количество цифр, до 10.
  • width — минимальное число цифр для вывода до точки. При необходимости будут добавлены ведущие нули.
  • default — значение для вывода, если n пустое или не-числовое. По умолчанию значение n.
  • prefix / suffix — вики-текст до и после позвращённого результата. Не будет добавлен, если n пустое или не-числовое. Например, вы можете использовать префикс 0x при конвертации в шеснадцатиричное или суффикс 8 при конфертации в восьмеричное.
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:

🔥 Trending searches on Wiki Русский:

Коловрат (символ)Афганская война (1979—1989)Судьба человекаКартаполов, Андрей ВалериевичHeadHunterТри богатыря (франшиза)Правители Российского государстваСёгун (роман)Российские железные дорогиChatGPTБДСМПацаны (телесериал)РамблерЗаслуженный строитель Российской ФедерацииАрменияУкраинаДжонсон, ДуэйнМатвиенко, Валентина ИвановнаКинопоискВаза (корабль)Во все тяжкиеЧерчилль, УинстонАлександр IIКолчак, Александр ВасильевичСписок городов России с населением более 100 тысяч жителейЧайковский, Пётр ИльичНижний НовгородПерестройкаРусско-турецкая война (1877—1878)PornhubДжоли, АнджелинаИльин, Иван АлександровичОрден Почёта (Россия)СолнцеЛига ставокНавальный, Алексей АнатольевичWhatsAppКХЛ в сезоне 2023/2024Список руководителей СССРШейк, ИринаВеликобританияПапины дочки. НовыеРусско-турецкие войныМарфин, Михаил НаумовичСамараКох, Альфред РейнгольдовичСобчак, Анатолий АлександровичКунгуров, Евгений ВикторовичБангладешМинистерство обороны Российской ФедерацииГазлайтингКатехизис еврея в СССРБродский, Иосиф АлександровичМастурбацияКанадаРоссийская Советская Федеративная Социалистическая РеспубликаВулканХарламов, ГарикМолдавияВойна во ВьетнамеChery AutomobileMilana StarФурцева, Екатерина АлексеевнаЧерногорияКосынка (пасьянс)Список стран по индексу человеческого развитияЦицернакабердКолокольников, Юрий АндреевичЗайцев, Геннадий Николаевич (Герой Советского Союза)Кулеба, Дмитрий ИвановичАхматова, Анна АндреевнаDiscordПодносова, Ирина ЛеонидовнаХрам Василия БлаженногоГайдар, Егор ТимуровичЗвёздные войныЯковлев, Егор КонстантиновичСиндром дефицита внимания и гиперактивности🡆 More