如何PHP的CRC32散列转换到MySQL相当于?(How to convert PHP's

2019-08-02 00:02发布

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

有任何想法吗?

Answer 1:

如果你有64位平台,你可以放心地使用CRC32功能在PHP和CRC32在MySQL。 快速测试:

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

MySQL的:

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


文章来源: How to convert PHP's crc32 hash into the MySQL equivalent?
标签: php sql hash