Преобразование из целого числа в его двоичное представление Кто-нибудь понял, есть ли какая-либо встроенная функциональность в Go для преобразования из любого из числовых типов в свою двоичную числовую форму. Например, если 123 был входом, строка "1111011" была бы выходом. Ответ 1 В пакете strconv есть FormatInt, который принимает int64 и позволяет указать базу. 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 возвращает строковое представление я в данной базе, для 2 <= base <= 36. Результат использует строчные буквы 'a' to 'z' для цифровых значений >= 10. Ответ 2 См. также fmt пакет: n := int64(123) fmt.Printf("%b", n) // 1111011 Ответ 3 Основываясь на ответе, предоставленном @Mark Хотя ОП задал вопрос о том, как печатать целое число, я часто хочу посмотреть на данные размером более 64 бит, без ошеломляющих глаз: /* --- 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() } см. этот код в play.golang.org Ответ 4 Этот код работает с большими целыми числами *big.Int: x := big.NewInt(123) s := fmt.Sprintf("%b", x) // s == "1111011" потому что *big.Int реализует интерфейс fmt.Formatter. Взято из fooobar.com/info/187220/...
Ответ 1 В пакете strconv есть FormatInt, который принимает int64 и позволяет указать базу. 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 возвращает строковое представление я в данной базе, для 2 <= base <= 36. Результат использует строчные буквы 'a' to 'z' для цифровых значений >= 10.
Ответ 3 Основываясь на ответе, предоставленном @Mark Хотя ОП задал вопрос о том, как печатать целое число, я часто хочу посмотреть на данные размером более 64 бит, без ошеломляющих глаз: /* --- 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() } см. этот код в play.golang.org
Ответ 4 Этот код работает с большими целыми числами *big.Int: x := big.NewInt(123) s := fmt.Sprintf("%b", x) // s == "1111011" потому что *big.Int реализует интерфейс fmt.Formatter. Взято из fooobar.com/info/187220/...