2012-10-26 9 views
8

MySQLのCRC32()関数は符号なしのBIGINTを返しますが、PHPは16進数値を返します。 PHPでPHPのcrc32ハッシュをMySQLに相当するものに変換するには?

:MySQLでは

hash('crc32','hello world') == 7813f744

SELECT CRC32('hello world') == 222957957

CRC32値をCHAR(8)列に格納されています。

PHPで生成されたハッシュを、MySQLが生成するのと同じ値にする方法がわかりませんのみのです。明らかに動作していないよう:

SELECT HEX(CRC32('hello world')) == D4A1185

SELECT CONV('7813f744',16,10) == 2014574404

任意のアイデア?

+0

は、私はあなたが 'ハッシュ( 'crc32b'、...)'を使用する必要があるかもしれないと思います。最初のコメントをここで確認してください:http://www.php.net/manual/en/function.hash.php#107920 – Aziz

+0

私が言ったように、私はPHPで何もすることなくSQLでこれをしたいと思います。私の懸念は、既存のデータを変換することです。 – DanMan

+0

私は実際にあなたの質問を誤解していると思います。私はあなたがMySQLとPHPから異なるハッシュを得ていると思った。私はいくつかのものを見てみましょう... – Aziz

答えて

2

64ビットプラットフォームの場合、PHPではcrc32の機能を、MySQLではCRC32という機能を安全に使用できます。クイックテスト:

php > echo crc32('foobar') . "\n"; 
    2666930069 

のMySQL:

>select crc32('foobar'); 
    +-----------------+ 
    | crc32('foobar') | 
    +-----------------+ 
    |  2666930069 | 
    +-----------------+ 
    1 row in set (0.00 sec) 
+0

ありがとう、しかし、どのように変換するmysqlのPHP crc32と同等(プログラム的に) – RafaSashi

+0

ああ私は分かります。 – mente

関連する問題