在某些情況下,特別是在處理雜湊函數時,開發人員可能需要將uint64 值轉換為int64,同時保留其二進位表示形式。這看起來是一個簡單的操作,但由於潛在的溢出可能會令人困惑。
例如, murmur2 雜湊函數產生 uint64 結果。當使用僅支援 int64(有符號 64 位元)的 PostgreSQL 時,開發人員可能想要進行型別轉換以保留雜湊的二進位值。
幸運的是,這種轉換很簡單。只需使用類型轉換:
i := uint64(0xffffffffffffffff) i2 := int64(i)
結果輸出為:
18446744073709551615 -1
需要注意的是,轉換後記憶體表示保持不變;僅更改類型。
但是,將無型別整數常數轉換為 int64 時有一個警告。例如:
i3 := int64(0xffffffffffffffff) // Compile time error!
嘗試此轉換會導致編譯時錯誤,因為值 0xffffffffffffffff 超出了最大 int64 值 (0x7ffffffffffffffffff)。在這種情況下,開發人員必須使用 uint64 類型或明確處理轉換。
以上是如何在 Go 中安全地將 uint64 轉換為 int64,同時保留其二進位表示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!