115 lines
1.4 KiB
Go
115 lines
1.4 KiB
Go
package crockford32
|
|
|
|
var (
|
|
// encodeMap takes binary values and converts them to
|
|
// characters in Crockford base32.
|
|
encodeMap = map[uint8]rune{
|
|
0: '0',
|
|
1: '1',
|
|
2: '2',
|
|
3: '3',
|
|
4: '4',
|
|
5: '5',
|
|
6: '6',
|
|
7: '7',
|
|
8: '8',
|
|
9: '9',
|
|
10: 'A',
|
|
11: 'B',
|
|
12: 'C',
|
|
13: 'D',
|
|
14: 'E',
|
|
15: 'F',
|
|
16: 'G',
|
|
17: 'H',
|
|
18: 'J',
|
|
19: 'K',
|
|
20: 'M',
|
|
21: 'N',
|
|
22: 'P',
|
|
23: 'Q',
|
|
24: 'R',
|
|
25: 'S',
|
|
26: 'T',
|
|
27: 'V',
|
|
28: 'W',
|
|
29: 'X',
|
|
30: 'Y',
|
|
31: 'Z',
|
|
}
|
|
|
|
// decodeMap takes characters and converts them to binary
|
|
// values based on Crockford base32.
|
|
decodeMap = map[rune]uint8{
|
|
'0': 0,
|
|
'O': 0,
|
|
'o': 0,
|
|
'1': 1,
|
|
'I': 1,
|
|
'i': 1,
|
|
'L': 1,
|
|
'l': 1,
|
|
'2': 2,
|
|
'3': 3,
|
|
'4': 4,
|
|
'5': 5,
|
|
'6': 6,
|
|
'7': 7,
|
|
'8': 8,
|
|
'9': 9,
|
|
'A': 10,
|
|
'a': 10,
|
|
'B': 11,
|
|
'b': 11,
|
|
'C': 12,
|
|
'c': 12,
|
|
'D': 13,
|
|
'd': 13,
|
|
'E': 14,
|
|
'e': 14,
|
|
'F': 15,
|
|
'f': 15,
|
|
'G': 16,
|
|
'g': 16,
|
|
'H': 17,
|
|
'h': 17,
|
|
'J': 18,
|
|
'j': 18,
|
|
'K': 19,
|
|
'k': 19,
|
|
'M': 20,
|
|
'm': 20,
|
|
'N': 21,
|
|
'n': 21,
|
|
'P': 22,
|
|
'p': 22,
|
|
'Q': 23,
|
|
'q': 23,
|
|
'R': 24,
|
|
'r': 24,
|
|
'S': 25,
|
|
's': 25,
|
|
'T': 26,
|
|
't': 26,
|
|
'V': 27,
|
|
'v': 27,
|
|
'W': 28,
|
|
'w': 28,
|
|
'X': 29,
|
|
'x': 29,
|
|
'Y': 30,
|
|
'y': 30,
|
|
'Z': 31,
|
|
'z': 31,
|
|
}
|
|
|
|
ignoredSymbols = map[rune]struct{}{
|
|
'-': {},
|
|
'*': {},
|
|
'$': {},
|
|
'=': {},
|
|
'u': {},
|
|
'U': {},
|
|
}
|
|
)
|