88

数値型のいずれかを 2 進数形式に変換するための組み込み機能が Go にあるかどうか、誰かが考えを持っていますか?

たとえば、123が入力の場合、文字列"1111011"が出力になります。

4

7 に答える 7

127

strconvパッケージには があり、FormatIntを受け取り、int64ベースを指定できます。

n := int64(123)

fmt.Println(strconv.FormatInt(n, 2)) // 1111011

デモ: http://play.golang.org/p/leGVAELMhv

http://golang.org/pkg/strconv/#FormatInt

func FormatInt(i int64, base int) string

FormatInt は、2 <= base <= 36 の場合、指定された基数で i の文字列表現を返します。結果は、数字の値 >= 10 に対して小文字の 'a' から 'z' を使用します。

于 2012-12-14T00:21:43.797 に答える
72

fmtパッケージも参照してください。

n := int64(123)
fmt.Printf("%b", n)  // 1111011
于 2014-04-29T11:55:23.117 に答える
3

@Markが提供する回答に基づいて構築

OPは整数を出力する方法を尋ねましたが、私はしばしば、目がくらむことなく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 でこのコードを参照してください
于 2015-07-26T00:59:21.233 に答える