note 106546 added to function.base-convert

From: Date: Thu, 17 Nov 2011 18:45:13 +0000
Subject: note 106546 added to function.base-convert
Groups: php.notes 
Request: Send a blank email to php-notes+get-184547@lists.php.net to get a copy of this message
Convert an arbitrarily large number from any base to any base. string convBase(string $numberInput, string $fromBaseInput, string $toBaseInput) $numberInput number to convert as a string $fromBaseInput base of the number to convert as a string $toBaseInput base the number should be converted to as a string examples for $fromBaseInput and $toBaseInput '0123456789ABCDEF' for Hexadecimal (Base16) '0123456789' for Decimal (Base10) '01234567' for Octal (Base8) '01' for Binary (Base2) You can really put in whatever you want and the first character is the 0. Examples: <?php convBase('123', '0123456789', '01234567'); //Convert '123' from decimal (base10) to octal (base8). //result: 173 convBase('70B1D707EAC2EDF4C6389F440C7294B51FFF57BB', '0123456789ABCDEF', '01'); //Convert '70B1D707EAC2EDF4C6389F440C7294B51FFF57BB' from hexadecimal (base16) to binary (base2). //result: //111000010110001110101110000011111101010110000101110 //110111110100110001100011100010011111010001000000110 //001110010100101001011010100011111111111110101011110 //111011 convBase('1324523453243154324542341524315432113200203012', '012345', '0123456789ABCDEF'); //Convert '1324523453243154324542341524315432113200203012' from senary (base6) to hexadecimal (base16). //result: 1F9881BAD10454A8C23A838EF00F50 convBase('355927353784509896715106760','0123456789','Christopher'); //Convert '355927353784509896715106760' from decimal (base10) to undecimal (base11) using "Christopher" as the numbers. //result: iihtspiphoeCrCeshhorsrrtrh convBase('1C238Ab97132aAC84B72','0123456789aAbBcCdD', '~!@#$%^&*()'); //Convert'1C238Ab97132aAC84B72' from octodecimal (base18) using '0123456789aAbBcCdD' as the numbers to undecimal (base11) using '~!@#$%^&*()' as the numbers. //result: !%~!!*&!~^!!&(&!~^@#@@@& 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; } ?> ---- Server IP: 64.71.164.2 Probable Submitter: 76.188.161.222 ---- Manual Page -- http://www.php.net/manual/en/function.base-convert.php Edit -- https://master.php.net/note/edit/106546 Del: integrated -- https://master.php.net/note/delete/106546/integrated Del: useless -- https://master.php.net/note/delete/106546/useless Del: bad code -- https://master.php.net/note/delete/106546/bad+code Del: spam -- https://master.php.net/note/delete/106546/spam Del: non-english -- https://master.php.net/note/delete/106546/non-english Del: in docs -- https://master.php.net/note/delete/106546/in+docs Del: other reasons-- https://master.php.net/note/delete/106546 Reject -- https://master.php.net/note/reject/106546 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#184547) next »