生成(void *)数据的哈希键

时间:2012-04-17 21:51:57

标签: c++ hashtable hash ns-3

我想知道如何生成void数据的哈希键。

我正在开展网络和处理数据包的项目。我必须生成哈希表。要散列的数据包标头。但我不知道数据包头的结构或类。所以,对此有任何想法。我只是想把它转换为无效。并散列void数据以生成散列键。

任何其他想法。好的逻辑将受到欢迎。

2 个答案:

答案 0 :(得分:2)

查看CityHash,它具有我认为适合您输入的功能:

// Hash function for a byte array.
uint64 CityHash64(const char *buf, size_t len);

据我所知,char被用作输入类型只是为了方便 - 它并不意味着例如如果找到零字节,函数将停止散列。

还有一个128位版本和其他东西。

答案 1 :(得分:1)

您可以使用任何接受任何类型指针的哈希函数,只要它也占用缓冲区的长度。只需转换指针并使用它。大多数哈希函数将使用char *输入和size_t长度。

但是,根据您的问题,您可能没有标题的长度。如果你没有这个长度,它将不起作用。