gpt4 book ai didi

go - 故意的 int 溢出

转载 作者:IT王子 更新时间:2023-10-29 00:53:55 24 4
gpt4 key购买 nike

我正在使用哈希函数 murmur2,它返回一个 uint64

然后我想将它存储在 PostgreSQL 中,它只支持 BIGINT(带符号的 64 位)。

因为我对数字本身不感兴趣,而只对二进制值感兴趣(因为我将它用作检测唯一性的 id(我的值集大约有 1000 个值,64 位散列对我来说就足够了)我想通过“仅”更改类型将其转换为 int64

如何以一种令编译器满意的方式做到这一点?

最佳答案

您可以简单地使用类型 conversion :

i := uint64(0xffffffffffffffff)
i2 := int64(i)
fmt.Println(i, i2)

输出:

18446744073709551615 -1

uint64 转换为 int64 总是成功的:它不会改变内存表示,只是改变类型。如果您尝试将无类型整数常量值转换为 int64,您可能会感到困惑:

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

这是一个编译时错误,因为常量值 0xffffffffffffffff(以任意精度表示)不适合 int64,因为适合 的最大值>int640x7fffffffffffffff:

constant 18446744073709551615 overflows int64

关于go - 故意的 int 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com