base56 package - toolman.org/encoding/base56 - Go Packages (original) (raw)

Package base56 provides functions for encoding/decoding uint64 values as short, easily digestible, base56 strings.

For compatibility with other implementions, this package supports three separate and distinct base56 character sets through the package level, Encoding variables Std, Alt and Py3. Each of these Encodings leverage only 7-bit clean (ASCII) characters.

The Std Encoding employs the original character set used by this package and is composed of the numerals 0-9 followed by all upper case characters except for 'D' (0x44), 'I' (0x49), 'O' (0x4f), and 'Q' (0x51) and then all lower case characters except for 'i' (0x69) and 'o' (0x6f).

The Alt Encoding is compatible with PHP and Java implementations and is defined as the numerals 2-9 followed by all lower case characters except for 'l' (0x6c) and 'o' (0x6f) and then all upper case characters except for 'I' (0x49) and 'O' (0x4f).

The Py3 Encoding is compatible with the Python-3 implementation and is defined as the numerals 2-9 followed by all upper case characters except for 'I' (0x49) and 'O' (0x4f) and then all lower case characters except for 'l' (0x6c) and 'o' (0x6f).

Note, the Alt and Py3 Encodings are identical except for the order of character classes. Alt is numerals->lowercase->uppercase while Py3 is numerals->uppercase->lowercase.

For reference, here are links to the known implementations for other languages:

PHP....: http://rossduggan.ie/blog/codetry/base-56-integer-encoding-in-php/index.html Java...: ?? Python.: https://github.com/jyn514/base56

This section is empty.

View Source

var (

Std = charSet("0123456789ABCEFGHJKLMNPRSTUVWXYZabcdefghjklmnpqrstuvwxyz")


Alt = charSet("23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ")


Py3 = charSet("23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz")

)

ErrNotBase56 is returned by Decode if it is provided an invalid base56 value for the associated Encoding.

Decode is a convenience wrapper around Std.Decode.

Encode is a convenience wrapper around Std.Encode.

Hashf is a convenience wrapper around Std.Hashf.

Encoding represents a distinct base56 character set.

Decode accepts a valid, base56 string -- as returned by Encode -- and returns its uint64 value, or zero and ErrNotBase56 if the base56 string is invalid. Valid base56 values are composed of characters from the receiver's defined character set.

Encode accepts a uint64 value and encodes it to a base56 string composed of characters from the receiver's defined character set.

Hashf feeds its printf-like arguments into an FNV-1 hash (see "hash/fnv"), then returns the hashed 64 bit sum as a base56 encoded string according to rhe receiver's encoding character set.