Quelqu'un a-t-il une idée s'il existe une fonctionnalité intégrée dans Go pour la conversion de l'un des types numériques vers sa forme numérique binaire.
Par exemple, si 123
était l'entrée, la chaîne "1111011"
serait la sortie.
Le package strconv
a FormatInt
, qui accepte un int64
Et vous permet de spécifier la base.
n := int64(123)
fmt.Println(strconv.FormatInt(n, 2)) // 1111011
DEMO: http://play.golang.org/p/leGVAELMhv
http://golang.org/pkg/strconv/#FormatInt
func FormatInt(i int64, base int) string
FormatInt renvoie la représentation sous forme de chaîne de i dans la base donnée, pour 2 <= base <= 36. Le résultat utilise les lettres minuscules 'a' à 'z' pour les valeurs numériques> = 10.
Voir aussi le package fmt :
n := int64(123)
fmt.Printf("%b", n) // 1111011
Ce code fonctionne sur les grands entiers *big.Int
:
x := big.NewInt(123)
s := fmt.Sprintf("%b", x)
// s == "1111011"
car *big.Int
implémente le fmt.Formatter
interface.
Des pointeurs dangereux doivent être utilisés pour représenter correctement les nombres négatifs au format binaire.
package main
import (
"fmt"
"strconv"
"unsafe"
)
func bInt(n int64) string {
return strconv.FormatUint(*(*uint64)(unsafe.Pointer(&n)), 2)
}
func main() {
fmt.Println(bInt(-1))
}