Heim >Backend-Entwicklung >Golang >Wie kann ich uint64-Hashwerte trotz Größenbeschränkungen im BIGINT von PostgreSQL speichern?

Wie kann ich uint64-Hashwerte trotz Größenbeschränkungen im BIGINT von PostgreSQL speichern?

DDD
DDDOriginal
2024-12-01 01:57:10906Durchsuche

How Can I Store uint64 Hash Values in PostgreSQL's BIGINT Despite Size Limitations?

Bewusst überlaufende Ganzzahlen für die PostgreSQL-Speicherung

Im Zusammenhang mit der Speicherung von uint64-Hashwerten, die die Größe des BIGINT-Datentyps von PostgreSQL (signed) überschreiten 64 Bit) besteht eine gängige Lösung darin, uint64 in int64 umzuwandeln, indem einfach der Typ ohne geändert wird Ändern der binären Darstellung.

Lösung:

i := uint64(0xffffffffffffffff)
i2 := int64(i)

Mit dieser Typkonvertierung wird der uint64-Wert einer int64-Variablen zugewiesen, während seine ursprüngliche binäre Darstellung erhalten bleibt. Dies ist möglich, weil die Konvertierung nicht die Speicherdarstellung des Werts ändert, sondern nur seinen Typ.

Ausgabe:

18446744073709551615 -1

Die Konvertierung von uint64 in int64 erfolgt immer erfolgreich, unabhängig vom Wert. Es ist jedoch wichtig zu beachten, dass die Konvertierung eines untypisierten ganzzahligen Konstantenwerts in int64 zu einem Fehler bei der Kompilierung führen kann, wenn er den Maximalwert überschreitet, der durch int64 (0x7fffffffffffffff) dargestellt werden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich uint64-Hashwerte trotz Größenbeschränkungen im BIGINT von PostgreSQL speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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