简单但令人费解的问题:
说我有一个字符串“516e965a8fe4b”。我希望它成为0-100的数字。因为有这样的字母数字哈希的可能性远远超过100种,所以重叠很好。
我该如何实施?
答案 0 :(得分:4)
我很想知道你为什么要这样。不管怎样,我就是这样做的。
然后制作一个MOD 101号码。 (Modulus)
ID = Sum%101
答案 1 :(得分:1)
使用类似的东西。添加数字的十六进制值并将其修改为100:
function findNumber($hash) {
$sum=0;
for($i=0;$i<length($hash);$i++) {
$sum+=hexdec($hash[$i]);
}
return $sum%100;
}
答案 2 :(得分:1)
function getNumber($string){
$value = 0;
for ($i=0; $i < strlen($string); $i++)
$value += hexdec($string[$i]);
$value = (int)($value/((strlen($string)+.001)*15/100));
return $value;
}
答案 3 :(得分:1)
function getNumber($hex, $min, $max){
srand(hexdec($num));
return rand($min, $max);
}
你会得到一个介于$ min和$ max之间的数字(在你的情况下分别为0和100),每次你用相同的输入运行这个函数时它总是一样的(即使它使用随机函数也是确定的! )