首页 >后端开发 >Golang >如何安全地将 uint64 哈希输出转换为 int64 以进行数据库存储?

如何安全地将 uint64 哈希输出转换为 int64 以进行数据库存储?

DDD
DDD原创
2024-12-08 09:12:12270浏览

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 可能会导致编译时间增加错误,因为常量值可能不适合 int64 的范围。例如:

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

这是因为常量值 0xffffffffffffffff 具有任意精度,超过了 int64 的最大值,即 0x7ffffffffffffffff。

以上是如何安全地将 uint64 哈希输出转换为 int64 以进行数据库存储?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn