1 Star 0 Fork 0

wosylf/龙飞工具仓库

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
64位跟10进制转换.go 2.89 KB
一键复制 编辑 原始数据 按行查看 历史
itlun 提交于 2024-10-10 11:41 +08:00 . 优化随机生成问题
package xutil
import (
"fmt"
"math/rand"
"strings"
"time"
)
func F随机字符串(l int) string {
return F获取随机字符串(l)
}
const (
// V随机基字符串 = "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
)
// 传一个就是最大值、两个就是最大值和最小值
func F随机一个数字(args ...int) int {
l := len(args)
min := 0 // 定义范围的最小值
max := 0 // 定义范围的最大值
switch l { // 获取参数
case 0:
return 0
case 1:
max = args[0]
case 2:
max = args[0]
min = args[1]
}
rand.Seed(time.Now().UnixNano()) // 初始化随机种子
return rand.Intn(max-min+1) + min // 生成随机数
}
func F随机一个小数(args ...float64) float64 {
l := len(args)
min := float64(0) // 定义范围的最小值
max := float64(0) // 定义范围的最大值
switch l { // 获取参数
case 0:
return 0
case 1:
max = args[0]
case 2:
max = args[0]
min = args[1]
}
rand.Seed(time.Now().UnixNano()) // 初始化随机种子
return min + rand.Float64()*(max-min)
}
// 获取随机字符串
func F获取随机字符串(length int) string {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
b := []byte(基础字符)
var result []byte
for i := 0; i < length; i++ {
result = append(result, b[r.Intn(len(b))])
}
return string(result)
}
var 基础字符 string = "2r4WUZhdYzuaBmfK8ENqv1IlGo0xHTFPcOJkV7QXyngpMe63SDCtjAsw5i9RbL"
//var any1 string = "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
// 10进制转任意进制
func F10进制转62进制(num int) string {
n := len(基础字符)
new_num_str := ""
var remainder int
for num != 0 {
remainder = num % n
new_num_str = string(基础字符[remainder]) + new_num_str
num = num / n
}
return new_num_str
}
func Fint64进制转62进制(num int64) string {
return F10进制转62进制(int(num))
}
// map根据value找key
func findkey(in string) int {
result := -1
for i := 0; i < len(基础字符); i++ {
if in == string(基础字符[i]) {
return i
}
}
return result
}
func pow(x, y int) int {
if y == 0 {
return 1
}
n := x
for {
if y == 1 {
break
}
n *= x
y--
}
return n
}
func F62转int64(str string) int64 {
return int64(F62进制转10进制(str))
}
// 任意进制转10进制
func F62进制转10进制(num string) int {
n := len(基础字符)
var new_num int
new_num = 0
nNum := len(strings.Split(num, "")) - 1
for _, value := range strings.Split(num, "") {
tmp := findkey(value)
if tmp != -1 {
new_num = new_num + tmp*pow(n, nNum)
nNum = nNum - 1
} else {
break
}
}
return new_num
}
// 生成随机验证码
func F随机生成验证码(width int) string {
numeric := [10]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
r := len(numeric)
ti := time.Now().UnixNano()
var sb strings.Builder
for i := 0; i < width; i++ {
rand.Seed(ti + int64(i))
fmt.Fprintf(&sb, "%d", numeric[rand.Intn(r)])
}
return sb.String()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wosylf/ltool.git
git@gitee.com:wosylf/ltool.git
wosylf
ltool
龙飞工具仓库
4aab2f4b94f9

搜索帮助