将 uint64 转换为 int64 以进行哈希函数输出
使用返回 uint64 值的哈希函数(例如 murmur2)并存储结果时在像 PostgreSQL 这样只支持 BIGINT (int64) 的数据库中,有必要将uint64 到 int64。
解决方案:类型转换
最简单的解决方案是使用类型转换:
i := uint64(0xffffffffffffffff) i2 := int64(i)
此转换成功为它不会改变内存表示,只会改变类型。生成的 int64 值将具有与原始 uint64 相同的二进制表示形式。
输出:
18446744073709551615 -1
附加说明:
将无类型整型常量值直接转换为 int64 可能会导致编译时间增加错误,因为常量值可能不适合 int64 的范围。例如:
i3 := int64(0xffffffffffffffff) // Compile time error!
这是因为常量值 0xffffffffffffffff 具有任意精度,超过了 int64 的最大值,即 0x7ffffffffffffffff。
以上是如何安全地将 uint64 哈希输出转换为 int64 以进行数据库存储?的详细内容。更多信息请关注PHP中文网其他相关文章!