Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Преобразует числа в указанное основание от 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