binary - traductor - Conversión de un entero a su representación binaria
suma de binarios (4)
Basándose en la respuesta proporcionada por @Mark
A pesar de que el OP preguntó cómo imprimir un número entero, a menudo quiero ver más de 64 bits de datos, sin que mis ojos se asombren:
/* --- Credit to Dave C in the comments --- */
package main
import (
"bytes"
"fmt"
)
func main() {
fmt.Printf("<%s>/n", fmtBits([]byte{0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D, 0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D}))
// OUTPUT:
// <11011110 10101101 10111110 11101111 11110000 00001101 11011110 10101101 10111110 11101111 11110000 00001101>
}
func fmtBits(data []byte) []byte {
var buf bytes.Buffer
for _, b := range data {
fmt.Fprintf(&buf, "%08b ", b)
}
buf.Truncate(buf.Len() - 1) // To remove extra space
return buf.Bytes()
}
vea este código en play.golang.org
Alguien tiene una idea de si hay alguna función incorporada en Ir para convertir de cualquiera de los tipos numéricos a su forma de número binario.
Por ejemplo, si 123
fue la entrada, la cadena "1111011"
sería la salida.
El paquete strconv
tiene FormatInt
, que acepta un int64
y le permite especificar 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 devuelve la representación de cadena de i en la base dada, para 2 <= base <= 36. El resultado usa las letras minúsculas ''a'' a ''z'' para valores de dígito> = 10.
Este código funciona en enteros grandes *big.Int
:
x := big.NewInt(123)
s := fmt.Sprintf("%b", x)
// s == "1111011"
porque *big.Int
implementa la interfaz fmt.Formatter
.
Tomado de https://.com/a/23317788/871134
Ver también el paquete fmt :
n := int64(123)
fmt.Printf("%b", n) // 1111011