Tôi đã viết một giải pháp ngu ngốc cho việc này, bất kỳ công thức nào tốt hơn? Như bạn có thể thấy rất nhiều chuyển đổi vô dụng ở đó.Go - chuyển đổi chuỗi đại diện cho số nhị phân thành 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"))
}
Những câu trả lời dưới đây được khuyến khích, nhưng nếu bạn thực sự muốn làm việc chuyển đổi chính mình, bạn có thể làm điều đó mà không có bất kỳ sự trợ giúp nào từ các thư viện. Đặt 'result' thành int và cho mỗi lần lặp của vòng lặp,' result = (kết quả << 1) | (n-'0 ') ' – axw