Go: konvertieren in int64 uint64 ohne Verlust von Informationen

Das problem mit dem folgenden code:

var x uint64 = 18446744073709551615
var y int64 = int64(x)

ist, dass y ist -1. Ohne Verlust von Informationen, ist der einzige Weg, um die Konvertierung zwischen diesen beiden Zahlentypen zu verwenden encoder und decoder?

buff bytes.Buffer
Encoder(buff).encode(x)
Decoder(buff).decode(y)

Beachten Sie, ich bin nicht versucht, eine gerade numerische Konvertierung in Ihrem typischen Fall. Ich bin mehr ein Anliegen, die statistische Eigenschaften der Zufallszahlen-generator.

  • y -1 ist? Ist dein OS ein 32 bit one, oder ein 64-bit ein?
  • Der Kerl, der downvoted mich, wieso der downvote? @VonC 64 bit.
  • Ich habe nicht downvote (hier ist ein upvote). Ich wurde gefragt, über die OS wegen des tip.golang.org/doc/go1.1#int, wo sehen Sie -1 in 32bit OS nur.
  • Ich sein werde. Ich Wette, wir eingerichtet haben, ist dieser Lack für die Ausführung als 32-bit!
  • Was möchten Sie y zu sein, wenn nicht die -1? Sie wollen behaupten, dass x == y nach dem Umbau und haben einen Fehler/Panik, wenn es nicht?
  • Ein random number generator liefert einen diskreten Satz von bits, die mit bestimmten zufälligen Eigenschaften. In diesem Fall sind es 64 bit von Ihnen. Ich möchte in der Lage sein, um die 64 bit und verwenden Sie Sie als eine int64. Ich will nicht, wie ich oben sagte, eine gerade numerische Konvertierung.

InformationsquelleAutor wheaties | 2014-11-13
Schreibe einen Kommentar