文字と数字を含む文字列から数字を生成する方法を知りたいです。要件は、同じ文字列が常に同じ数を生成する必要があるということです。
文字列の整数を返すエンコード タイプを PHP で見つけようとしています。
文字列に戻す必要はありません。利用可能なそのようなエンコーディングはありますか??
ハッシュ関数を探しています。文字列から小さな数値を生成するサンプル アルゴリズムをここに投稿します。
// making hex hash from sentence
$s = hash( 'ripemd160', "I'm a dog" );
// taking last 5 hex digits
$s2 = substr( $s, -5 );
// converting hex digits to number
echo hexdec( $s2 );
サンプル アルゴリズムの説明:
これは、文字列から数値を生成するために使用できる複数の方法のサンプルにすぎないことに注意してください。
テスト:
dani@egg-v2:~$ php5
<?php
$a=array( "I'm a dog", "I'm a cat", "I'm a car" );
foreach ($a as $e) {
$s = hash( 'ripemd160', $e) ;
$s2 = substr( $s, -5 );
echo "Hash of $e: " . hexdec( $s2 ) . "\n";
}
?>
Hash of I'm a dog: 147508
Hash of I'm a cat: 23112
Hash of I'm a car: 563887 <-- little change in string but big change in number
整数は限られた量のデータしか格納できませんが、文字列はそれよりもはるかに多くのデータを格納できます。文字列を整数に変換すると、どういうわけか、常に何か他のものと衝突します (一言で言えば、一意ではありません!).... 他のものを選択したほうがよいでしょう (ソルトされた MD5 でしょうか?)!
私は解決策を得たと思います。
私はcrc32のようなものを探していました。文字列の整数が得られます。
助けてくれてありがとう、また不明瞭で申し訳ありません。