我想生成一个随机的 17 位数字字符串并通过 golang 将其解析为 uint64,这是我的代码:const msgMaxValue = 100000000000000000s := fmt.Sprintf("%17v", rand.New(rand.NewSource(time.Now().UnixNano())).Int63n(msgMaxValue))log.Info("s:", s)msgId, err := strconv.Atoi(s)错误是:语法无效,我发现随机值中有一个空格但不知道为什么,我应该如何解决它,谢谢你
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
已通过“crypto/rand”修复它,下面是代码:
func CreateRandomNumber(len int) (string, error) {
var numbers = []byte{1, 2, 3, 4, 5, 7, 8, 9}
var container string
length := bytes.NewReader(numbers).Len()
for i := 0; i < len; i++ {
random, err := rand.Int(rand.Reader, big.NewInt(int64(length)))
if err != nil {
log.Error("random error:", err)
return "", err
}
container += fmt.Sprintf("%d", numbers[random.Int64()])
}
return container, nil
}
然后strconv.Atoi得到一个 int 类型号就可以了
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消