Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Module:BaseConvert

Permanently protected module
From Wikipedia, the free encyclopedia
Module documentation[view] [edit] [history] [purge]
WarningThis Lua module is used onapproximately 37,000 pages and changes may be widely noticed. Test changes in the module's/sandbox or/testcases subpages, or in your ownmodule sandbox. Consider discussing changes on thetalk page before implementing them.

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

Usage

localBaseConvert=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 of0x when converting to hex, or a suffix of<sub>8</sub> when converting to octal.

From templates

In wikimarkup, this module may be called with a function namentom, e.g.:

MarkupRenders as
{{#invoke:BaseConvert|16to10|  FF  }}

255

{{#invoke:BaseConvert|10to36|500}}

DW

{{#invoke:BaseConvert|10to16|Foo|default=0}}

0

All options above are supported, excluding|base=,|from= and|n= which are set by the mandatory options.

Edge cases

MarkupRenders as
{{#invoke:BaseConvert|10to10|500}}

500

{{#invoke:BaseConvert|10to10|FooBar}}

FooBar

{{#invoke:BaseConvert|10to10|FooBar|default=}}
{{#invoke:BaseConvert|10to16|Foo}}

Foo

Math templates
  • Functions
  • Numeral systems
Functions
Numeral systems
Conversions
convert many units (see:list)
cvt abbreviated{{convert}}
convinfobox{{convert}} for infoboxes
bbl to t barrels of oil to tonnes
long ton long hundredweights, quarters and pounds to kilograms;
long tons and hundredweights to pounds and metric tons
miles-chains miles and chains to kilometres linking "chains"
decdeg degrees, minutes, and seconds todecimal degrees
deg2dms decimal degrees to degrees, minutes, and seconds
deg2hms decimal degrees tohour angle (in hours, minutes, and seconds)
hms2deghour angle (in hours, minutes, and seconds) to decimal degrees
inflation calculate inflation of Consumer Price Index-related prices
pop density population density in an area
track gauge railway track gauges
Notation andformatting
bigmath bigger font to matchTeX\displaystyle (standalone formulas only)
bra–ket notation
ceil,floor calculations:mw:Help:#expr; formatting indicators3.14,3.14 (no calculation performed)
fraction slant fractions35 (not for maths/science articles; usestanding or upright fractions{{sfrac}} instead)
intmathintegral symbols
  • langle
  • rangle
  • angbr
  • angular brackets
  • ldelim
  • rdelim
  • multiline delimiters (2–5 lines inclusive)
    abs absolute values (paired vertical lines)
    math short text-based formulas
    mathcal [mathematical] calligraphic font; alternative toLaTeX\mathcal{...}
    mvar individual italicized maths variables in normal text
  • overline
  • underline
  • a line set above/below a sequence of characters
    overarc an arc set above a sequence of characters
  • overset
  • underset
  • arbitrary characters/diacritics set above/below one another
    pars parentheses that can be resized()
    sfrac "standing" or upright fractions3/5 (use in maths/science articles instead of{{fraction}})
  • sub
  • sup
  • su
  • subscripts and superscripts
    tmath WrapTeX in<math> tags
    tombstone symbol indicating theend of a proof
    val measurement values, uncertainties and units
    vec various overarrows, underarrows, etc.
  • Boxes
  • Tags
  • Notices
  • The abovedocumentation istranscluded fromModule:BaseConvert/doc.(edit |history)
    Editors can experiment in this module'ssandbox(edit |diff) and testcases(create) pages.
    Subpages of this module.

    localp={}localdigits='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'localfunctionnormalizeFullWidthChars(s)returnmw.ustring.gsub(s,'[!-~]',function(s)returnmw.ustring.char(mw.ustring.codepoint(s,1)-0xFEE0)end)endlocalfunction_convert(n,base,from,precision,width,default,prefix,suffix)n=tostring(n)-- strip off any leading '0x' (unless x is a valid digit in the input base)from=tonumber(from)ifnotfromorfrom<34thenlocalcn,c=n:gsub('^(-?)0[Xx]','%1')ifc>0andnotfromthenfrom=16endend-- 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.localsign=''localcn,c=n:gsub('^-','')ifc>0thensign='-'end-- replace any full-width Unicode characters in the string with their ASCII equivalentsn=normalizeFullWidthChars(n)-- handle scientific notation with whitespace around the 'e' e.g. '5 e7'n=n:gsub('%s*[eE]%s*','e')from=fromor10localnum=tonumber(n,from)base=tonumber(base)precision=tonumber(precision)width=tonumber(width)ifnotnumornotbasethenreturndefaultornendlocali,f=math.modf(num)localt={}repeatlocald=(i%base)+1i=math.floor(i/base)table.insert(t,1,digits:sub(d,d))untili==0while#t<(widthor0)dotable.insert(t,1,'0')endlocalintPart=table.concat(t,'')-- compute the fractional partlocaltf={}whilef>0and#tf<(precisionor10)dof=f*basei,f=math.modf(f)table.insert(tf,digits:sub(i+1,i+1))end-- add trailing zeros if neededifprecisionand#tf<precisionthenfori=1,precision-#tfdotable.insert(tf,'0')endendlocalfracPart=table.concat(tf,'')-- remove trailing zeros if not neededifnotprecisionthenfracPart=fracPart:gsub('0*$','')end-- add the radix point if neededif#fracPart>0thenfracPart='.'..fracPartendreturn(prefixor'')..sign..intPart..fracPart..(suffixor'')endfunctionp.convert(frame)-- Allow for invocation via #invoke or directly from another modulelocalargsifframe==mw.getCurrentFrame()thenargs=frame.argselseargs=frameendlocaln=args.nlocalbase=args.baselocalfrom=args.fromlocalprecision=args.precisionlocalwidth=args.widthlocaldefault=args.defaultlocalprefix=args.prefixlocalsuffix=args.suffixreturn_convert(n,base,from,precision,width,default,prefix,suffix)endsetmetatable(p,{__index=function(t,k)localfrom,base=k:match('^([0-9]+)to([0-9]+)$')ifnotfromthenreturnnilendreturnfunction(frame)localargs=frame.argsreturn_convert(mw.text.trim(args[1]),base,from,args.precision,args.width,args.default,args.prefix,args.suffix)endend})returnp
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:BaseConvert&oldid=1082435285"
    Category:
    Hidden category:

    [8]ページ先頭

    ©2009-2025 Movatter.jp