處理PostgreSQL 儲存的整數溢位
此程式設計問題涉及雜湊函數值從uint64 到int64 的轉換,具體重點是PostgreSQL 相容性。 PostgreSQL 支援 BIGINT(有符號 64 位元),而雜湊函數 murmur2 傳回 uint64 值。程式設計師希望在不影響其二進位表示的情況下有效地轉換這些值進行儲存。
故意整數溢位:解
為了在不遺失資料的情況下實現轉換,可以利用型別轉換。以下程式碼片段示範了這個轉換:
i := uint64(0xffffffffffffffff) i2 := int64(i) fmt.Println(i, i2)
此方法不會改變值的記憶體表示,但會變更其類型。
常數轉換中的陷阱
請注意,嘗試將無型別整型常數直接轉換為 int64 可能會導致編譯時錯誤。任意精確度的無型別整數常數如果超過其最大值(0x7ffffffffffffff),則無法直接指派給 int64。
以上是如何安全地將 uint64 雜湊值轉換為 int64 以進行 PostgreSQL 儲存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!