web-dev-qa-db-ja.com

整数からそのバイナリ表現への変換

数値型のいずれかをそのバイナリ数値形式に変換するためのGoの組み込み機能がある場合、誰でもアイデアを持っています。

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

54
cobie

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の場合、指定されたベースでiの文字列表現を返します。結果では、数字の値が10以上の場合、小文字の「a」から「z」を使用します。

85
I Hate Lazy

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

n := int64(123)
fmt.Printf("%b", n)  // 1111011
42
Mark

このコードは大きな整数で動作します*big.Int

x := big.NewInt(123)
s := fmt.Sprintf("%b", x)
// s == "1111011"

なぜなら*big.Intfmt.Formatterインターフェイス。

https://stackoverflow.com/a/23317788/871134 から取得

5
Deleplace

バイナリ形式で負の数を正しく表すには、安全でないポインターを使用する必要があります。

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

https://play.golang.org/p/GxXjjWMyC4x

1
Soslan