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

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

DDD
发布: 2024-12-08 09:12:12
原创
209 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板