猿问

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

我为此写了一个愚蠢的解决方案,还有更好的食谱吗?如您所见,那里有许多无用的转换。


package main


import (

    "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"))

}



心有法竹
浏览 411回答 2
2回答

波斯汪

您需要strconv.ParseInt从任意基数转换为给定位长的函数。package mainimport (    "fmt"    "strconv")func main() {    if i, err := strconv.ParseInt("1001", 2, 64); err != nil {        fmt.Println(err)    } else {        fmt.Println(i)    }}Playground

哔哔one

例如,在Go 1上,package mainimport (    "fmt"    "strconv")func main() {    i, err := strconv.ParseInt("1101", 2, 64)    if err != nil {        fmt.Println(err)        return    }    fmt.Println(i)}输出:13
随时随地看视频慕课网APP

相关分类

Go
我要回答