故意为 PostgreSQL 存储溢出整数
在存储 uint64 哈希值的上下文中,该值超出了 PostgreSQL 的 BIGINT 数据类型(有符号)的大小64位),一个常见的解决方案是通过简单地改变类型来将uint64转换为int64
解决方案:
i := uint64(0xffffffffffffffff) i2 := int64(i)
使用此类型转换,将 uint64 值分配给 int64 变量,同时保持其原始二进制表示形式。这是可能的,因为转换不会更改值的内存表示,仅更改其类型。
输出:
18446744073709551615 -1
将 uint64 转换为 int64 始终是成功,与价值无关。但是,需要注意的是,如果将无类型整型常量值转换为 int64 超过了 int64 可以表示的最大值 (0x7ffffffffffffff),则可能会导致编译时错误。
以上是尽管有大小限制,如何在 PostgreSQL 的 BIGINT 中存储 uint64 哈希值?的详细内容。更多信息请关注PHP中文网其他相关文章!