【问题标题】:How can convert hex to int using go [duplicate]如何使用 go [重复] 将十六进制转换为 int
【发布时间】:2019-11-11 00:51:40
【问题描述】:

我使用下面提到的代码使用 go 将十六进制值转换为十进制

numberStr := strings.Replace(s, "0x", "", -1)
    numberStr = strings.Replace(numberStr, "0X", "", -1)
    n, err := strconv.ParseUint(numberStr, 16, 64)
    if err != nil {
        panic(err)
    }
    return n 

十六进制值为:0x340aad21b3b700000

但抛出错误:strconv.ParseUint: parsing "340aad21b3b700000": value out of range

您能否提出任何替代解决方案。

【问题讨论】:

    标签: go


    【解决方案1】:

    uint64 的最大值是 0xFFFF FFFF FFFF FFFF,因此要使用溢出值,你必须求助于标准库的 math/big 包:

    import "math/big"
    
    ...
    
    n := new(big.Int)
    n.SetString(numberStr, 16)
    

    继续使用包documentation

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 2017-12-30
      • 2023-03-08
      • 2017-05-29
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 2017-02-18
      • 2020-01-03
      相关资源
      最近更新 更多