有人可以告诉我我做错了什么吗?我试图用murmurhash散列一个值,但每次都得到不同的值:
std::string str = "some test string";
char out[32];
MurmurHash3_x86_32(str.c_str(), str.length(), 0, out);
unsigned int hash = reinterpret_cast<unsigned int>(out);
答案 0 :(得分:9)
变量out
的类型为char []
,或char
的数组。在大多数情况下,这充当char
的指针。在这里,您要投射指针值,而不是指向的内容。
另外,我不知道MurmurHash API,但数组out
是32 bytes 。您正在尝试将其转换为32 位整数(假设您的平台上的整数为32位)。
答案 1 :(得分:4)
我认为MurmurHash3_x86_32
正在返回32位哈希值。但是你给它一个32 字节输出参数。
你可以简单地说:
std::string str = "some test string";
unsigned int hash;
MurmurHash3_x86_32(str.c_str(), str.length(), 0, &hash);