diff --git a/app/utils/convert.go b/app/utils/convert.go index 8547d99..3371e7f 100644 --- a/app/utils/convert.go +++ b/app/utils/convert.go @@ -9,35 +9,35 @@ import ( "strings" ) -const CODE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" -const CODE_LENTH = 62 - -var EDOC = map[string]int{"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16, "h": 17, "i": 18, "j": 19, "k": 20, "l": 21, "m": 22, "n": 23, "o": 24, "p": 25, "q": 26, "r": 27, "s": 28, "t": 29, "u": 30, "v": 31, "w": 32, "x": 33, "y": 34, "z": 35, "A": 36, "B": 37, "C": 38, "D": 39, "E": 40, "F": 41, "G": 42, "H": 43, "I": 44, "J": 45, "K": 46, "L": 47, "M": 48, "N": 49, "O": 50, "P": 51, "Q": 52, "R": 53, "S": 54, "T": 55, "U": 56, "V": 57, "W": 58, "X": 59, "Y": 60, "Z": 61} - -func Base62Encode(number int) string { - if number == 0 { - return "0" +func Base62Encode(num int) string { + if num == 0 { + return string(base62Chars[0]) } - result := make([]byte, 0) - for number > 0 { - round := number / CODE_LENTH - remain := number % CODE_LENTH - result = append(result, CODE62[remain]) - number = round + + var encoded []byte + for num > 0 { + remainder := num % 62 + num /= 62 + encoded = append([]byte{base62Chars[remainder]}, encoded...) } - return string(result) + + return string(encoded) } +const base62Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + /** * 解码字符串为整数 */ -func Base62Decode(str string) int { - str = strings.TrimSpace(str) - var result int = 0 - for index, char := range []byte(str) { - result += EDOC[string(char)] * int(math.Pow(CODE_LENTH, float64(index))) + +// DecodeBase62 decodes a base62 string to an integer +func Base62Decode(encoded string) int { + var num int + for i, char := range encoded { + index := strings.IndexRune(base62Chars, char) + num += index * int(math.Pow(62, float64(len(encoded)-i-1))) } - return result + return num } func ToString(raw interface{}, e error) (res string) { if e != nil {