Heim >Backend-Entwicklung >Golang >Wie können Sie ein uint64 in ein int64 konvertieren, ohne Informationen zu verlieren?
Konvertieren von uint64 in int64 ohne Informationsverlust
Der bereitgestellte Code konvertiert tatsächlich den angegebenen uint64-Wert in einen int64, aber der resultierende Wert (- 1) ist nicht die erwartete statistische Darstellung. Dies liegt daran, dass der Datentyp int64 die Bitwerte trotz Beibehaltung mit einer anderen Vorzeichenkonvention interpretiert.
Um diese Diskrepanz zu vermeiden, können Sie einen Encoder-Decoder-Ansatz verwenden, um das ursprüngliche Bitmuster beizubehalten. Es ist jedoch wichtig zu beachten, dass die Konvertierung von uint64 nach int64 mit:
int64 y = int64(x)
die Bitfolge nicht verändert. Es wird einfach die Zeicheninterpretation angewendet. Somit ergibt die folgende Konvertierung:
var x uint64 = 18446744073709551615 var y int64 = int64(x)
das Ergebnis:
x = 0xFFFFFFFFFFFFFFFF y = 0xFFFFFFFFFFFFFFFF (as a signed int64)
Im Gegensatz dazu stellt der Encoder-Decoder-Ansatz sicher, dass die Bitdarstellung unabhängig von der Vorzeichenkonvention erhalten bleibt .
Wenn Sie beispielsweise den uint64-Wert geringfügig ändern:
var x uint64 = 18446744073709551615 - 3
Die resultierende int64-Konvertierung:
var y int64 = int64(x)
ergibt:
y = -4
Dies zeigt, dass die Bitdarstellung erhalten bleibt und genau als vorzeichenbehaftete Ganzzahl interpretiert wird.
Das obige ist der detaillierte Inhalt vonWie können Sie ein uint64 in ein int64 konvertieren, ohne Informationen zu verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!