繁体   English   中英

查找PHP函数的逆函数

[英]Find inverse of PHP function

由于我在PHP上比我更希望“笨蛋”,因此是否可以逆转以下函数,例如:

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”,而不是当前方式?

如果这是错误的地方,我很抱歉

并不是的。 您的函数将为所有形式的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 ,您将无法确定函数中所包含的内容。

此功能仅在有限范围内起作用,但是在某些时候资源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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM