微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数 进制转换 10-16

10-16

<?PHP

    function dec2hex($str)
    {
        $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
        $hexval = '';
        $quotient = $str;
        $divisor = $str;
        $flag = true;
        while($flag)
        {
            $len = strlen($divisor);
            $pos = 1;
            $quotient = 0;
            $div = substr($divisor, 0, 2);
            $remainder = $div[0];
            while($pos < $len)
            {
                $div = $remainder == 0 ? $divisor[$pos] : $remainder.$divisor[$pos];
                $remainder = $div % 16;
                $quotient = $quotient.floor($div/16);
                $pos++;
            }
            $quotient = trim_left_zeros($quotient);
            $divisor = "$quotient";
            $hexval = $hex[$remainder].$hexval;
            if (strlen($divisor)<=2)
                if ($divisor<15)
                {
                    $flag = false;
                }
        }
        $hexval = $hex[$quotient].$hexval;
        $hexval = trim_left_zeros($hexval);
        return $hexval;
    }
    function trim_left_zeros($str)
        $str = ltrim($str, '0');
        if (empty($str))
            $str = '0';
        return $str;
    
    $hex = dec2hex('10153302696068');
    if($hex%2!=0) $hex = '0'. $hex;
    $str = str_split($hex,2);
    $out = '';
    for($i=0;$i<count($str);$i++)
      $out = '\x' . $str[$i] . $out;
    $out = $out.'\x00\00';
    echo $out;
    

?>

16-10

<?PHP function convBase($numberInput,$fromBaseInput,$toBaseInput) {     if ($fromBaseInput==$toBaseInput) return $numberInput;     $fromBase = str_split($fromBaseInput,1);     $toBase = str_split($toBaseInput,1);     $number = str_split($numberInput,1);     $fromLen=strlen($fromBaseInput);     $toLen=strlen($toBaseInput);     $numberLen=strlen($numberInput);     $retval='';     if ($toBaseInput == '0123456789')     {         $retval=0;         for ($i = 1;$i <= $numberLen; $i++)             $retval = bcadd($retval,bcmul(array_search($number[$i-1],$fromBase),bcpow($fromLen,$numberLen-$i)));         return $retval;     }     if ($fromBaseInput != '0123456789')         $base10=convBase($numberInput,'0123456789');     else         $base10 = $numberInput;     if ($base10<strlen($toBaseInput))         return $toBase[$base10];     while($base10 != '0')     {         $retval = $toBase[bcmod($base10,$toLen)].$retval;         $base10 = bcdiv($base10,$toLen,0);     }     return $retval; } $btime = microtime(true); echo convBase('c4ca4238a0b923820dcc509a6f75849b','0123456789abcdef','0123456789'); echo microtime(true) - $btime; ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐