Heim > Backend-Entwicklung > Golang > Wie kann ich ein uint64 in Go sicher in ein int64 konvertieren und dabei seine binäre Darstellung beibehalten?

Wie kann ich ein uint64 in Go sicher in ein int64 konvertieren und dabei seine binäre Darstellung beibehalten?

DDD
Freigeben: 2024-11-27 06:43:13
Original
753 Leute haben es durchsucht

How Can I Safely Convert a uint64 to an int64 in Go, Preserving its Binary Representation?

Int-Überlaufkonvertierung in int64

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)
Nach dem Login kopieren

Die resultierende Ausgabe ist:

18446744073709551615 -1
Nach dem Login kopieren

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!
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage