= 0; $i--) { $digit = ord($data{$i}); $part_res = bcmul($digit, $radix); $result = bcadd($result, $part_res); $radix = bcmul($radix, $base); } return $result; } //-- // Convert a number back into binary form //-- function number_to_binary($number, $blocksize) { $base = "256"; $result = ""; $div = $number; while($div > 0) { $mod = bcmod($div, $base); $div = bcdiv($div, $base); $result = chr($mod) . $result; } return str_pad($result, $blocksize, "\x00", STR_PAD_LEFT); } function base2dec($value,$base,$digits=FALSE) { if($base<2 or $base>256) die("Invalid Base: ".$base); bcscale(0); if($base<37) $value=strtolower($value); if(!$digits) $digits=digits($base); $size=strlen($value); $dec="0"; for($loop=0;$loop<$size;$loop++) { $element=strpos($digits,$value[$loop]); $power=bcpow($base,$size-$loop-1); $dec=bcadd($dec,bcmul($element,$power)); } return (string) $dec; } function dec2base($dec,$base,$digits=FALSE) { if($base<2 or $base>256) die("Invalid Base: ".$base); bcscale(0); $value=""; if(!$digits) $digits=digits($base); while($dec>$base-1) { $rest=bcmod($dec,$base); $dec=bcdiv($dec,$base); $value=$digits[$rest].$value; } $value=$digits[intval($dec)].$value; return (string) $value; } function digits($base) { if($base>64) { $digits=""; for($loop=0;$loop<256;$loop++) { $digits.=chr($loop); } } else { $digits ="0123456789abcdefghijklmnopqrstuvwxyz"; $digits.="ABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; } $digits=substr($digits,0,$base); return (string) $digits; } ?>