In bestimmten Szenarien, insbesondere beim Umgang mit Hash-Funktionen, müssen Entwickler möglicherweise einen uint64-Wert in einen int64 konvertieren und dabei seine binäre Darstellung beibehalten . Dies scheint eine unkomplizierte Operation zu sein, kann jedoch aufgrund der Möglichkeit eines Überlaufs verwirrend sein.
Zum Beispiel generiert die Hash-Funktion murmur2 ein uint64-Ergebnis. Bei der Arbeit mit PostgreSQL, das nur int64 (64 Bit mit Vorzeichen) unterstützt, wünschen sich Entwickler möglicherweise eine Typkonvertierung, die den Binärwert des Hashs beibehält.
Glücklicherweise ist diese Konvertierung trivial. Verwenden Sie einfach eine Typkonvertierung:
i := uint64(0xffffffffffffffff) i2 := int64(i)
Die resultierende Ausgabe ist:
18446744073709551615 -1
Es ist wichtig zu beachten, dass die Speicherdarstellung nach der Konvertierung dieselbe bleibt; Nur der Typ wird geändert.
Es gibt jedoch eine Einschränkung bei der Konvertierung untypisierter Ganzzahlkonstanten in int64. Zum Beispiel:
i3 := int64(0xffffffffffffffff) // Compile time error!
Der Versuch dieser Konvertierung führt zu einem Fehler bei der Kompilierung, da der Wert 0xffffffffffffffff den maximalen int64-Wert (0x7fffffffffffffff) überschreitet. In solchen Fällen müssen Entwickler einen uint64-Typ verwenden oder die Konvertierung explizit durchführen.
Das obige ist der detaillierte Inhalt vonWie kann ich ein uint64 in Go sicher in ein int64 konvertieren und dabei seine binäre Darstellung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!