php求一种算法可以将任意内容的字符串唯一均匀地转换为1~n之间的一个整数
PHP中文网
PHP中文网 2017-04-11 09:13:23
[PHP讨论组]

类似于md5,但结果只能是一个整数且n是可以改变的。

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
巴扎黑

大家都在说思路,我来给个crc32的实例:


$str = 'Created by PhpStorm.';

$crc32 = crc32($str);

// 因为crc32求出来的是一个32位整数,可为负数,所以abs一下
// 要多少范围内,就求余多少就行
$result = abs($crc32) % 100;

var_dump($result);


// int(59)

我这个还不是最佳答案?

PHPz

md5本身就能实现这样的功能,md5是把一组数据通过哈希算法映射为128位数字,然后再输出ASCII为字符串。只要把这个过程逆向即可把字符串转为128位数字,再映射为1-n之间的整数。但是我想这样映射之后的哈希碰撞一定会大幅度上升。不过这也不失为一种方法 。

黄舟
value = md5(str)

value = mask & value // mask为0b000011111,其中1的数量为m,且2^m等于n
 

大概可以是这个思路

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号