每种散列方法都有不同的值

时间:2011-02-20 00:51:55

标签: c++ hash

有人可以告诉我我做错了什么吗?我试图用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);

2 个答案:

答案 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);