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"))
}
Ответы
Ответ 1
Вам нужна функция 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
Ответ 2
Например, в 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