Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Преобразует числа в указанное основание от 2 до 36 для использования в таких шаблонах, как {{ двоичный }}, {{ восьмеричный }}, {{ шестнадцатеричный }} и т. Д.

Пример использования:

local  BaseConvert  =  require ( 'Модуль: BaseConvert' ) BaseConvert . convert ({ n  =  14600926 ,  base  =  16 })  - возвращает "ДЕСЯТИЛЕТИЕ"

Аргументы:

  • n - (обязательно) число, которое нужно преобразовать, в виде строки. Вместо этого это может быть число, если исходная база равна 10.
  • base - (обязательно) основание, в которое должно быть преобразовано число. Может быть от 2 до 36 включительно.
  • from - база входа. По умолчанию 10 (или 16, если перед входом стоит «0x»). Обратите внимание, что основания, отличные от 10, не поддерживаются, если входные данные имеют дробную часть.
  • точность - количество цифр, отображаемых после точки счисления. При необходимости добавляются нули в конце. Если не указано иное, будет показано необходимое количество цифр, до 10.
  • width - минимальное количество цифр, отображаемых перед точкой счисления. При необходимости будут добавлены ведущие нули.
  • по умолчанию - возвращаемое значение, если n пустое или нечисловое. По умолчанию используется значение n.
  • префикс / суффикс - викитекст для добавления до / после возвращаемого результата. Не будет добавляться, если n пустое или нечисловое. Например, вы можете использовать префикс 0xпри преобразовании в шестнадцатеричный формат или суффикс <sub>8</sub>при преобразовании в восьмеричный.

местный  p  =  {}местные  цифры  =  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'функция  normalizeFullWidthChars ( s ) вернуть  мв . ustring . gsub ( s ,  '[! - ~]' ,  функция ( ы )  вернуть  мв . ustring . char ( mw . ustring . codepoint ( s ,  1 )  -  0xFEE0 )  конец ) конецфункция  _convert ( n ,  основание ,  от ,  точность ,  ширина ,  значение по умолчанию ,  префикс ,  суффикс ) n  =  ''  ..  n  - преобразовать в строку  - удалить любой ведущий '0x' (если x не является допустимой цифрой во входной базе) от  =  ToNumber ( с ) если  не  от  или  от  <  34,  то местный  c n ,  c  =  n : gsub ( '^ (-?) 0 [Xx]' ,  '% 1' ) если  c  >  0,  а  не  from  then  from  =  16  end конец - проверьте наличие отрицательного знака. Сделайте это, пока ввод все еще находится в строковой форме, - потому что tonumber не поддерживает отрицательные числа в основаниях, отличных от 10. местный  знак  =  '' местный  c п ,  с  =  п : gsub ( '^ -' ,  '' ) если  c  >  0,  то  знак  =  '-'  конец  - заменить любые полноразмерные символы Unicode в строке их эквивалентами ASCII п  =  normalizeFullWidthChars ( п )  - обрабатывать научную запись с пробелом вокруг 'e', ​​например, '5 e7' n  =  n : gsub ( '% s * [eE]% s *' ,  'e' )  from  =  от  или  10 локальная  Num  =  ToNumber ( п ,  с ) База  =  ToNumber ( основание ) Точность  =  ToNumber ( точность ) ширина  =  ToNumber ( ширина )  если  не  Num  или  не  основание  затем  возвращать значение по  умолчанию  или  н  конец  локальный  я ,  f  =  math.modf ( число ) местный  t  =  {} повторить местный  d  =  ( i  %  base )  +  1 i  =  math.floor ( i  /  base ) table.insert ( t ,  1 ,  цифры : sub ( d ,  d )) пока  я  ==  0 в то время как  # t  <  ( ширина  или  0 )  делать table.insert ( t ,  1 ,  '0' )  конец локальная  intPart  =  table.concat ( т ,  '' )  - вычислить дробную часть местный  tf  =  {} в то время как  f  >  0  и  # tf  <  ( точность  или  10 )  делают f  =  f  *  база я ,  f  =  math.modf ( f ) table.insert ( tf ,  цифры : sub ( i  +  1 ,  i  +  1 )) конец  - при необходимости добавить нули в конце если  точность  и  # tf  <  точность,  то для  i  =  1 ,  точность  -  # tf  do table.insert ( tf ,  '0' )  конец конец fracPart  =  table.concat ( тс ,  '' )  - удалить нули в конце, если они не нужны если  не  точность,  то fracPart  =  fracPart : gsub ( '0 * $' ,  '' ) конец  - при необходимости добавьте точку счисления если  # fracPart  >  0,  то fracPart  =  '.'  ..  fracPart конец  return  ( префикс  или  " )  ..  знак  ..  intPart  ..  fracPart  ..  ( суффикс  или  " )конецфункция  p . конвертировать ( кадр ) - Разрешить вызов через #invoke или напрямую из другого модуля местные  аргументы если  frame  ==  mw . getCurrentFrame (),  затем args  =  frame . аргументы еще args  =  frame конец  локальный  n  =  args . п локальная  база  =  аргументы . база локальный  from  =  args . из местная  точность  =  аргументы . точность локальная  ширина  =  аргументы . ширина локальное  значение по умолчанию  =  аргументы . По умолчанию локальный  префикс  =  аргументы . приставка местный  суффикс  =  аргументы . суффикс return  _convert ( n ,  основание ,  от ,  точность ,  ширина ,  значение по умолчанию ,  префикс ,  суффикс )конецвернуть  p