大数 进制转换 10-16

2013/05/21 20:58

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,$fromBaseInput, '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;
?>

0
0 收藏

0 评论
0 收藏
0