-1

文字と数字を含む文字列から数字を生成する方法を知りたいです。要件は、同じ文字列が常に同じ数を生成する必要があるということです。

文字列の整数を返すエンコード タイプを PHP で見つけようとしています。

文字列に戻す必要はありません。利用可能なそのようなエンコーディングはありますか??

4

3 に答える 3

0

ハッシュ関数を探しています。文字列から小さな数値を生成するサンプル アルゴリズムをここに投稿します。

// 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 );

サンプル アルゴリズムの説明:

  • 文字列からハッシュを作成します。「ripemd160」はハッシュ アルゴリズムの名前で、他のハッシュ アルゴリズムは「md5」、「sha256」、「haval160,4」などです。「I'm a dog」はハッシュする文のサンプルです。
  • ハッシュから数桁だけを取得して、小さな数字を取得します。このために、最後の 5 桁を取ります
  • 最後に、 16 進数を数値に変換します。

これは、文字列から数値を生成するために使用できる複数の方法のサンプルにすぎないことに注意してください。

テスト:

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
于 2012-07-16T20:14:51.453 に答える
0

整数は限られた量のデータしか格納できませんが、文字列はそれよりもはるかに多くのデータを格納できます。文字列を整数に変換すると、どういうわけか、常に何か他のものと衝突します (一言で言えば、一意ではありません!).... 他のものを選択したほうがよいでしょう (ソルトされた MD5 でしょうか?)!

于 2012-07-16T20:16:39.417 に答える
0

私は解決策を得たと思います。

私はcrc32のようなものを探していました。文字列の整数が得られます。

助けてくれてありがとう、また不明瞭で申し訳ありません。

于 2012-07-16T20:12:12.337 に答える