1

文字列値(例: "myObjectName")を0〜19の整数値にハッシュする方法を考えていました。一意の文字列値は20個以下であることが保証されています。

ありがとう

4

3 に答える 3

1

任意の種類のハッシュを使用できますが、この場合、文字のASCII値(または必要に応じてユニコードコードポイント)を合計し、結果にモジュロ20を適用することができます。それはあなたに0から19までの数を与えるでしょう。

ただし、これにより、20個の文字列を一意に識別する番号が得られることが保証されています。20個のランダムな文字列のコレクションをハッシュすると、文字列ごとに一意のコードが生成されることを保証するハッシュアルゴリズムはありません。

于 2011-08-12T23:46:07.403 に答える
1

提案されたように、私のコメントを回答として追加します。

ハッシュは、ここでたどるべき正確なパスではないことをお勧めします。

1 つの方法は、文字列と 1 ~ 20 (または 0 ~ 19) の数値のキーと値のペアを持つ辞書 (Python の組み込みデータ構造など) を使用することです。

各文字列を読んだり見たりするときに、辞書エントリが存在するかどうかを確認し、存在する場合は必要なことをすべて行い、存在しない場合は、次に利用可能な番号で新しい辞書エントリを作成します (ディクショナリ内の既存のエントリ)。

于 2011-08-13T00:33:50.443 に答える
0

md5 sumを実行し、数値に変換して、モジュロ20を実行します。例:PHPの場合:

hexdec(substr(md5("hello"), 1, 8)) % 20

substr()は、数値を整数に変換できるようにするために必要です。

于 2011-08-12T23:45:46.563 に答える