首頁 >後端開發 >Golang >如何安全地將 uint64 哈希輸出轉換為 int64 以進行資料庫儲存?

如何安全地將 uint64 哈希輸出轉換為 int64 以進行資料庫儲存?

DDD
DDD原創
2024-12-08 09:12:12223瀏覽

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

將uint64 轉換為int64 以進行雜湊函數輸出

使用返回uint64 值的雜湊函數(例如murmur2)並儲存結果時在像PostgreSQL 這樣只支援BIGINT (int64) 的資料庫中,有必要將uint64 到int64。

解決方案:型別轉換

最簡單的解決方案是使用型別轉換:

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

此轉換成功為它不會改變記憶體表示,只會改變型別。產生的 int64 值將具有與原始 uint64 相同的二進位表示形式。

輸出:

18446744073709551615 -1

附加說明:

將無型別整型常數值會導致編譯時間增加錯誤,因為常數值可能不適合int64 的範圍。例如:

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

這是因為常數值 0xffffffffffffffff 具有任意精度,超過了 int64 的最大值,即 0x7ffffffffffffffffff。

以上是如何安全地將 uint64 哈希輸出轉換為 int64 以進行資料庫儲存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn