如何解决我应该如何更改解析方法或正确的随机方法
我想生成一个随机的17位数字字符串,并通过golang将其解析为uint64,这是我的代码:
const msgMaxValue = 100000000000000000
s := fmt.Sprintf("%17v",rand.New(rand.NewSource(time.Now().UnixNano())).Int63n(msgMaxValue))
log.Info("s:",s)
msgId,err := strconv.Atoi(s)
错误是:语法无效,我发现随机值中有一个空格,但不知道为什么,我该如何解决,谢谢你
解决方法
已通过“ 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
可以获取整数类型编号
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。