Go - преобразовать строку, представляющую двоичное число, в int - PullRequest
12 голосов
/ 14 февраля 2012

Я написал глупое решение для этого, какой-нибудь лучший рецепт?Как вы видите, там много бесполезных конверсий.

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

Ответы [ 2 ]

22 голосов
/ 14 февраля 2012

Требуется функция 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)
    }
}

Детская площадка

8 голосов
/ 14 февраля 2012

Например, на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...