1

void データのハッシュキーを生成する方法を知りたいです。

私はネットワーキングとパケット処理のプロジェクトに取り組んでいます。ハッシュテーブルを生成する必要があります。ハッシュするパケット ヘッダー。しかし、パケットヘッダーの構造やクラスがわかりません。だから、これについてのアイデア。私はそれを無効に変換することを考えています。void データをハッシュしてハッシュ キーを生成します。

その他のアイデア。GOODロジックは大歓迎です。

4

2 に答える 2

2

あなたの入力に適していると私が思う機能を持っているCityHashを見てください:

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

私が知る限り、入力型として使用されている char は便宜上のものです。たとえば、ゼロバイトが見つかった場合に関数がハッシュを停止することを意味するものではありません。

128ビット版などもあります。

于 2012-04-18T07:11:30.677 に答える
1

バッファーの長さも取る限り、任意の型のポインターを受け入れる任意のハッシュ関数を使用できます。ポインタをキャストして使用するだけです。ほとんどのハッシュ関数は、char *入力とsize_t長さを使用します。

ただし、あなたの質問から、ヘッダーの長さがない可能性があります。この長さがないとうまくいきません。

于 2012-04-21T01:15:31.813 に答える