2 Star 0 Fork 1

web-bird/bird

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
short_sn.go 1.24 KB
Copy Edit Raw Blame History
悟道人 authored 2020-11-12 15:15 +08:00 . 保存
package utils
import (
"math"
"math/rand"
"strconv"
"strings"
"time"
)
var tenToAny = strings.Split("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
//创建短的SN
func MakeShortSN(n int64) string {
sn := decimalToAny(int(n), 62)
rand.Seed(time.Now().Unix())
return sn + tenToAny[rand.Intn(len(tenToAny))]
}
// 10进制转任意进制
func decimalToAny(num, n int) string {
new_num_str := ""
var remainder int
var remainder_string string
for num != 0 {
remainder = num % n
if 76 > remainder && remainder > 9 {
remainder_string = tenToAny[remainder]
} else {
remainder_string = strconv.Itoa(remainder)
}
new_num_str = remainder_string + new_num_str
num = num / n
}
return new_num_str
}
// map根据value找key
func findKey(in string) int {
result := -1
for k, v := range tenToAny {
if in == v {
result = k
}
}
return result
}
// 任意进制转10进制
func anyToDecimal(num string, n int) int {
var new_num float64
new_num = 0.0
nNum := len(strings.Split(num, "")) - 1
for _, value := range strings.Split(num, "") {
tmp := float64(findKey(value))
if tmp != -1 {
new_num = new_num + tmp*math.Pow(float64(n), float64(nNum))
nNum = nNum - 1
} else {
break
}
}
return int(new_num)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/web-bird/bird.git
git@gitee.com:web-bird/bird.git
web-bird
bird
bird
ac7d4c82d0c1

Search