为了账号安全,请及时绑定邮箱和手机立即绑定

Go-将代表二进制数的字符串转换为int

Go-将代表二进制数的字符串转换为int

Go
心有法竹 2021-05-03 13:25:25
我为此写了一个愚蠢的解决方案,还有更好的食谱吗?如您所见,那里有许多无用的转换。package mainimport (    "fmt"    "strconv"    "math")func conv(str string) int {    l := len(str)    result := 0.0    for i,n := range str {        number,_ := strconv.Atof64(string(n))        result += math.Exp2(float64(l-i-1))*number    }    return int(result)}func main() {    fmt.Println(conv("1001"))}
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您需要strconv.ParseInt从任意基数转换为给定位长的函数。


package main


import (

    "fmt"

    "strconv"

)


func main() {

    if i, err := strconv.ParseInt("1001", 2, 64); err != nil {

        fmt.Println(err)

    } else {

        fmt.Println(i)

    }

}

Playground


查看完整回答
反对 回复 2021-05-10
?
哔哔one

TA贡献1854条经验 获得超8个赞

例如,在Go 1上,


package main


import (

    "fmt"

    "strconv"

)


func main() {

    i, err := strconv.ParseInt("1101", 2, 64)

    if err != nil {

        fmt.Println(err)

        return

    }

    fmt.Println(i)

}

输出:


13


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 410 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信