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!