显然
MySQL的CRC32()函数返回一个无符号的BIGINT,而
PHP返回十六进制值.
在PHP中:
hash(‘crc32′,’hello world’)== 7813f744
在MysqL中:
SELECT CRC32(‘hello world’)== 222957957
CRC32值存储在CHAR(8)列中.
我无法弄清楚如何将PHP生成的哈希转换为MysqL仅用sql生成的相同值.显而易见的似乎不起作用:
SELECT HEX(CRC32(‘hello world’))== D4A1185
SELECT CONV(‘7813f744’,16,10)== 2014574404
有任何想法吗?
如果你有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)