Из этого комментария :
моя цель - преобразовать большее = 9223372036854775808543522345 в двоичную форму
мы находим, что ваш вопрос XY задача .
Поскольку мы знаем, что константа превышает 64 бита, нам нужно разбить ее на несколько 64-битных слов или сохранить в виде целого числа большего размера хранилище.
Go обеспечивает math/big
для операций с большими числами общего назначения, или в этом случае мы можем воспользоваться тем, что легко хранить до 127-бит значения со знаком (или 128-битные значения без знака) в struct
, содержащем два 64-битных целых числа (по крайней мере, одно из которых без знака).
Эта довольно тривиальная программа печатает результат преобразования в двоичный код:
500000000 x 2-sup-64 + 543522345 as binary:
111011100110101100101000000000000000000000000000000000000000000100000011001010111111000101001
package main
import "fmt"
const (
// Much larger value than int64.
bigger = 9223372036854775808543522345
d64 = 1 << 64
)
type i128 struct {
Upper int64
Lower uint64
}
func main() {
x := i128{Upper: bigger / d64, Lower: bigger % d64}
fmt.Printf("%d x 2-sup-64 + %d as binary:\n%b%.64b\n", x.Upper, x.Lower, x.Upper, x.Lower)
}