Heim > Backend-Entwicklung > Golang > Wie konvertiert man eine uint64-Hash-Ausgabe sicher in eine int64-Ausgabe für die Datenbankspeicherung?

Wie konvertiert man eine uint64-Hash-Ausgabe sicher in eine int64-Ausgabe für die Datenbankspeicherung?

DDD
Freigeben: 2024-12-08 09:12:12
Original
222 Leute haben es durchsucht

How to Safely Convert a uint64 Hash Output to an int64 for Database Storage?

Konvertieren von uint64 in int64 für die Hash-Funktionsausgabe

Beim Arbeiten mit Hash-Funktionen, die uint64-Werte zurückgeben, wie z. B. murmur2, und beim Speichern des Ergebnisses In einer Datenbank wie PostgreSQL, die nur BIGINT (int64) unterstützt, ist es notwendig, uint64 in ein zu konvertieren int64.

Lösung: Typkonvertierung

Die einfachste Lösung ist die Verwendung einer Typkonvertierung:

i := uint64(0xffffffffffffffff)
i2 := int64(i)
Nach dem Login kopieren

Diese Konvertierung ist so erfolgreich, wie sie ist. Die Speicherdarstellung wird nicht geändert, nur der Typ. Der resultierende int64-Wert hat die gleiche binäre Darstellung wie der ursprüngliche uint64.

Ausgabe:

18446744073709551615 -1
Nach dem Login kopieren

Zusätzlicher Hinweis:

Das Konvertieren eines untypisierten ganzzahligen Konstantenwerts direkt in int64 kann zu einem Fehler bei der Kompilierung führen, da dies bei dem konstanten Wert möglicherweise nicht der Fall ist passen in den Bereich von int64. Zum Beispiel:

i3 := int64(0xffffffffffffffff) // Compile time error!
Nach dem Login kopieren

Dies liegt daran, dass der konstante Wert 0xfffffffffffffff eine willkürliche Genauigkeit hat und den Maximalwert von int64 überschreitet, der 0x7ffffffffffffffff ist.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine uint64-Hash-Ausgabe sicher in eine int64-Ausgabe für die Datenbankspeicherung?. 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