如何将PHP的crc32哈希转换为MySQL等价?

Dan*_*Man 8 php sql hash

显然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

有任何想法吗?

men*_*nte 2

如果您有 64 位平台,您可以在 PHP 和MySQL 中安全地使用crc32CRC32函数。快速测试:

  php > echo crc32('foobar') . "\n";
  2666930069
Run Code Online (Sandbox Code Playgroud)

MySQL:

  >select crc32('foobar');
  +-----------------+
  | crc32('foobar') |
  +-----------------+
  |      2666930069 |
  +-----------------+
  1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)