2012-10-26 18 views
8

Görünüşe göre MySQL'in CRC32() işlevi işaretsiz BIGINT değerini döndürürken, PHP onaltılık değer döndürür. PHPPHP'nin crc32 hash'i MySQL eşdeğerine nasıl dönüştürülür?

:

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

MySQL:

SELECT CRC32('hello world') == 222957957

CRC32 değeri CHAR (8) kolon depolanır.

PHP'nin oluşturduğu karma değerini, yalnızca SQL ile MySQL'in ürettiği değere nasıl dönüştürebileceğini anlayamıyorum. bariz çalışmak görünmüyor:

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

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

bir fikir?

+0

Sana 'karma ('crc32b', ...)' kullanması gerekebilir düşünüyorum. Burada ilk yorumu kontrol edin: http://www.php.net/manual/en/function.hash.php#107920 – Aziz

+0

Dediğim gibi, bunu PHP'de yapmak zorunda kalmadan SQL'de yapmak istiyorum. benim endişem mevcut verileri dönüştürmek. – DanMan

+0

Aslında sorunuzu yanlış anlamış olduğumu düşünüyorum. MySQL ve PHP'den farklı karma şeyler aldığınızı sanıyordum. Birkaç şey bakmama izin ver ... – Aziz

cevap

2

64 bitlik bir platform varsa, PHP'de crc32 işlevini ve MySQL'de CRC32 güvenli bir şekilde kullanabilirsiniz. Hızlı testi:

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

MySQL:

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

Teşekkürler ama soru nasıl dönüştürülür mysql eşdeğeri php crc32 (programatik olarak) – RafaSashi

+0

Oh Görüyorum. Soru bu konuda net değildi – mente

İlgili konular