如题,我需要将一段 c 实现的函数转换成 java 或者 scala 代码。这个函数就是下面这个,一个哈希算法,在转换的过程中主要遇到的问题是,x *= 0xff51afd7ed558ccdULL
这一句,x=x*一个数,看这个应该是 16 进制的一个数,然后 U 表示无符号,LL 应该是表示 long long 类型,但是这个代码如何能在 java 中实现出来呢,大体逻辑我能知道,但是就是转换出来的结果跟 c 语言运行得到的结果不一致,希望有大佬能帮忙看一下。
inline DB::UInt64 intHash64(DB::UInt64 x)
{
x ^= x >> 33;
x *= 0xff51afd7ed558ccdULL;
x ^= x >> 33;
x *= 0xc4ceb9fe1a85ec53ULL;
x ^= x >> 33;
return x;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.