V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dyllen
V2EX  ›  Go 编程语言

crypto/rand 生成的随机数可以编码成纯数字字符串吗?

  •  
  •   dyllen · 2023-09-18 20:34:23 +08:00 · 1068 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    "crypto/rand.Read"生成的随机数可以编码成纯数字字符串吗?有没有现成的官方方法?

    3 条回复    2023-09-19 10:25:18 +08:00
    yang0327519
        1
    yang0327519  
       2023-09-18 20:36:52 +08:00
    package main

    import (
    "crypto/rand"
    "fmt"
    )

    func main() {
    n := 10 // 生成 10 个随机字节
    buf := make([]byte, n)

    _, err := rand.Read(buf)
    if err != nil {
    panic(err)
    }

    result := ""
    for _, b := range buf {
    result += fmt.Sprintf("%03d", b) // 将每个字节转换为三位数字的字符串
    }

    fmt.Println(result) // 输出纯数字字符串
    }
    body007
        2
    body007  
       2023-09-19 09:12:27 +08:00
    package main

    import (
    "crypto/rand"
    "fmt"
    "math/big"
    )

    func main() {
    err := test()
    if err != nil {
    panic(err)
    }
    }

    func test() error {
    limit := big.NewInt(10000000000) // 指定最大值,[0, max)

    num, err := rand.Int(rand.Reader, limit)
    if err != nil {
    return err
    }

    fmt.Println(num.String())
    return nil
    }
    dyllen
        3
    dyllen  
    OP
       2023-09-19 10:25:18 +08:00
    @yang0327519
    @body007 都可以,需要可控固定长度。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1401 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:39 · PVG 01:39 · LAX 09:39 · JFK 12:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.