我正在使用哈希函数murmur2
返回给我一个uint64
.
我想将它存储在PostgreSQL中,它只支持BIGINT
(带符号64位).
因为我对数字本身不感兴趣,只是对二进制值感兴趣(因为我将它用作检测唯一性的id(我的值为~1000值,64位散列对我来说足够了)我想int64
通过"只是"改变类型将其转换为.
如何以一种令编译器满意的方式做到这一点?
您只需使用类型转换:
i := uint64(0xffffffffffffffff) i2 := int64(i) fmt.Println(i, i2)
输出:
18446744073709551615 -1
转换uint64
为int64
始终成功:它不会更改内存表示只是类型.如果您尝试将无类型的整数常量值转换为以下内容,可能会让您感到困惑的是int64
:
i3 := int64(0xffffffffffffffff) // Compile time error!
这是一个编译时错误,因为常量值0xffffffffffffffff
(用任意精度表示)不适合,int64
因为适合的最大值int64
是0x7fffffffffffffff
:
constant 18446744073709551615 overflows int64