因为我更喜欢PHP中的“noob”而不是我希望的,例如,是否可以反转以下函数:
public function baseID($resourceid){
$rid = $resourceid;
$version = 0;
while ($rid > 16777216){
$version++;
if ($version == 1){
//the constant applied to all items
$rid -= 1342177280;
}elseif ($version == 2){
//the value added to the first updated version
$rid -= 50331648;
}else{
//the value added on all subsequent versions
$rid -= 16777216;
}
}
//$returnable = array('baseID'=>$rid,'version'=>$version);
return $rid;
}
是否可以输入“baseID”并返回“resourceID”而不是当前的方式?
如果这是提出这样问题的错误地方,我道歉
答案 0 :(得分:1)
不是真的。您的函数为以下形式的所有rid
返回相同的值:
5 * 2^28 + (3 + n) * 2^24
n
是正整数。
>>> baseID(5 * 2**28 + (3 + 1) * 2**24)
16777216
>>> baseID(5 * 2**28 + (3 + 2) * 2**24)
16777216
>>> baseID(5 * 2**28 + (3 + 3) * 2**24)
16777216
所以只给16777216
,你就无法确定你的功能是什么。
答案 1 :(得分:-2)
此功能仅适用于有限范围,但在某一时刻,资源ID将开始返回相同的结果。
public function resourceID($baseid){
$bid = $baseid;
$version = 0;
while ($bid <= 16777216){
++$version;
if ($version === 1){
$bid += 1342177280;
} elseif ($version === 2){
$bid += 50331648;
} else {
$bid += 16777216;
}
}
return $bid;
}