Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Output Hash uint64 dengan selamat kepada int64 untuk Penyimpanan Pangkalan Data?

Bagaimana untuk Menukar Output Hash uint64 dengan selamat kepada int64 untuk Penyimpanan Pangkalan Data?

DDD
DDDasal
2024-12-08 09:12:12235semak imbas

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

Menukar uint64 kepada int64 untuk Output Fungsi Hash

Apabila bekerja dengan fungsi cincang yang mengembalikan nilai uint64, seperti murmur2 dan menyimpan hasilnya dalam pangkalan data seperti PostgreSQL yang hanya menyokong BIGINT (int64), ia perlu tukar uint64 kepada int64.

Penyelesaian: Penukaran Jenis

Penyelesaian paling mudah ialah menggunakan penukaran jenis:

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

Penukaran ini berjaya kerana ia tidak mengubah perwakilan memori, hanya jenisnya. Nilai int64 yang terhasil akan mempunyai perwakilan binari yang sama seperti uint64 asal.

Output:

18446744073709551615 -1

Nota Tambahan:

Menukar nilai pemalar integer yang tidak ditaip terus kepada int64 boleh menghasilkan masa penyusunan ralat, kerana nilai malar mungkin tidak sesuai dengan julat int64. Contohnya:

i3 := int64(0xffffffffffffffff) // Compile time error!

Ini kerana nilai malar 0xffffffffffffffff mempunyai ketepatan sewenang-wenangnya dan melebihi nilai maksimum int64, iaitu 0x7fffffffffffffff.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Output Hash uint64 dengan selamat kepada int64 untuk Penyimpanan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn