1

これがアルゴリズムの言うことです。

hash = FNV_offset_basis
for each octet_of_data to be hashed
    hash = hash * FNV_prime
    hash = hash XOR octet_of_data
return hash

しかし、文字列のセットがある場合、FNV_offset_basisとして何を取る必要がありますか?

ハッシュされるデータの各オクテットの意味は何ですか。

また、テーブルのサイズはどうあるべきか、ハッシュされる文字列がN個あるとします。

文字列の変更を手伝ってください。

ありがとう。

4

1 に答える 1

3

上記のコメントで参照されているWebサイトから、

32 bit offset_basis = 2166136261

64 bit offset_basis = 14695981039346656037

ハッシュの幅に対応するものを使用してください。

オクテットは8ビットバイトです。8ビット文字のテキストを使用している場合、オクテットと文字は同じものです。

テーブルのサイズはあなた次第です。もちろんNより大きくしてください!大きいほど、予想される衝突は少なくなります。

于 2012-02-21T23:19:25.387 に答える