我为此写了一个愚蠢的解决方案,还有更好的食谱吗?如您所见,那里有许多无用的转换。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
哔哔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
- 2 回答
- 0 关注
- 410 浏览
添加回答
举报
0/150
提交
取消