PHP如何把字符串hash成10进制数字

一般情况而言需要做字符串到十进制数字的转换可以用 crc32() 函数 …

这个函数的优点是快 … 在我的知识范围内这应该是 php 内置最快的哈希函数 …

缺点是操作系统依赖 … 不同操作系统的 crc32() 函数会产生不一样的值 …

至于把 md5() 的结果转化成十进制 … 用 hexdec() 显然是不靠谱的 … 因为hexdec最大只能转0x7fffffff,再大就变成float了。

这里我们用到另外一个更加灵活的进制转换函数 base_convert()

这个函数的好处是返回 string … 也就不存在溢出的问题了 …

示例代码如下 …

1
2
3
4
<?php
echo base_convert( md5( 'something' ), 16, 10 );

// 89699910832403552662426604448206446062

http://segmentfault.com/q/1010000000142006/a-1020000000142161