在某些情况下,特别是在处理哈希函数时,开发人员可能需要将 uint64 值转换为 int64,同时保留其二进制表示形式。这看起来是一个简单的操作,但由于潜在的溢出可能会令人困惑。
例如, murmur2 哈希函数生成 uint64 结果。当使用仅支持 int64(有符号 64 位)的 PostgreSQL 时,开发人员可能希望进行类型转换以保留哈希的二进制值。
幸运的是,这种转换很简单。只需使用类型转换:
i := uint64(0xffffffffffffffff) i2 := int64(i)
结果输出为:
18446744073709551615 -1
需要注意的是,转换后内存表示保持不变;仅更改类型。
但是,将无类型整型常量转换为 int64 时有一个警告。例如:
i3 := int64(0xffffffffffffffff) // Compile time error!
尝试此转换会导致编译时错误,因为值 0xffffffffffffffff 超出了最大 int64 值 (0x7ffffffffffffffff)。在这种情况下,开发人员必须使用 uint64 类型或显式处理转换。
以上是如何在 Go 中安全地将 uint64 转换为 int64,同时保留其二进制表示形式?的详细内容。更多信息请关注PHP中文网其他相关文章!