Jump to content

Base36: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m There is no need to absolute value an already positive value. It's impossible to receive a negative number in this function without a compiler error. https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/data-types/uinteger-data-type
EkriirkE (talk | contribs)
m .NET is different than VB
Line 48: Line 48:




=== Visual Basic implementation ===
=== Visual Basic .NET implementation ===
<source lang="vb">
<source lang="vb">
Public Function ToBase36String(i as UInteger) As String
Public Function ToBase36String(i as UInteger) As String

Revision as of 06:44, 14 February 2018

Base36 is a binary-to-text encoding scheme that represents binary data in an ASCII string format by translating it into a radix-36 representation. The choice of 36 is convenient in that the digits can be represented using the Arabic numerals 0–9 and the Latin letters A–Z[1] (the ISO basic Latin alphabet).

Each base36 digit needs less than 6 bits of information to be represented.

Conversion

Signed 32- and 64-bit integers will only hold at most 6 or 13 base-36 digits, respectively (that many base-36 digits overflow the 32- and 64-bit integers). For example, the 64-bit signed integer maximum value of "9223372036854775807" is "1Y2P0IJ32E8E7" in base-36.

Standard implementations

Java SE supports conversion from/to String to different bases from 2 up to 36. For example, [1] and [2]

Just like Java, JavaScript also supports conversion from/to String to different bases from 2 up to 36. [3]

PHP, like Java, supports conversion from/to String to different bases from 2 up to 36. Use the base_convert function, available since PHP 4.

Python implementation

def base36encode(integer):
    chars, encoded = '0123456789abcdefghijklmnopqrstuvwxyz', ''

    while integer > 0:
        integer, remainder = divmod(integer, 36)
        encoded = chars[remainder] + encoded

    return encoded


Visual Basic .NET implementation

Public Function ToBase36String(i as UInteger) As String
    Const rainbow = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Dim sb = New StringBuilder()
    Do
        sb.Insert(0, rainbow(i Mod 36))
        i /= 36
    Loop While i <> 0
    Return sb.ToString()
End Function

See also

References

  1. ^ Hope, Paco; Walther, Ben (2008), Web Security Testing Cookbook, Sebastopol, CA: O'Reilly Media, Inc., ISBN 978-0-596-51483-9