@@ -9,35 +9,35 @@ import ( | |||||
"strings" | "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) { | func ToString(raw interface{}, e error) (res string) { | ||||
if e != nil { | if e != nil { | ||||