【发布时间】:2011-12-27 02:36:12
【问题描述】:
我编译了一段关于哈希函数的代码并得到了错误:整数常量对于'long'类型来说太大了。我做了谷歌它,它说要添加后缀“ULL”,但我确实有 ULL 作为后缀。此后缀仅受 gcc 4.4.1 支持,我的机器上只有 gcc 4.1.2,不允许安装新编译器。有什么办法可以更改代码从而解决问题吗?
谢谢, -托尼
unsigned long long hash(string k){ //FNV hash
unsigned long long x = 14695981039346656037ULL;
for (unsigned int y=0;y<k.length();y++){
x = x ^ (k[y]);
x = x * 1099511628211;
}
return (x);
}
【问题讨论】:
-
把你的常数分成两个 32 位整数,然后做
x = thehigherbits; x <<= 32; x = x | thelowerbits;,也许吧?