我正在使用哈希函数murmur2,它返回一个uint64.然后我想将它存储在仅支持BIGINT(有符号 64 位)的PostgreSQL 中。因为我对数字本身不感兴趣,而只是对二进制值感兴趣(因为我将它用作 id 来检测唯一性(我的一组值约为 1000 个值,64 位哈希对我来说就足够了)我想int64通过“只是”更改类型将其转换为。如何以一种令编译器满意的方式做到这一点?
1 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
您可以简单地使用类型转换:
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
- 1 回答
- 0 关注
- 173 浏览
添加回答
举报
0/150
提交
取消