Base62 编码用62个可见字符来编码信息,也就是所谓的62进制,可用于缩短地址之类的。实现起来也很简单。当然,这个实现跟别人家的有可能不一样,反正自己能编能解就行。
package main import ( "math" "bytes" "strings" ) const CODE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" const CODE_LENTH = 62 /** * 编码 整数 为 base62 字符串 */ func Encode(number int) string { if number == 0 { return "0" } result := make([]byte , 0) for number > 0 { round := number / CODE_LENTH remain := number % CODE_LENTH result = append(result,CODE62[remain]) number = round } return string(result) } /** * 解码字符串为整数 */ func Decode(str string) int { str = strings.TrimSpace(str) var result int = 0 for index,char := range []byte(str){ result += bytes.IndexByte([]byte(CODE62),char) * int(math.Pow(CODE_LENTH,float64(index))) } return result }
里面硬编码了 CODE_LENGTH 是不想每次去算一下长度,省点时间。
另外,最后几行的 bytes.IndexByte 其实可以换成别的方式,不用每次都查,这样的话可以提高点性能,提升一点是一点嘛。
好吧,项目中在用的其实已经改了。
时间: 2024-09-29 23:30:49