 # Php Programming Code Examples

## Php > Algorithms Code Examples

### Show the steps for converting a number from a given base to base 10

Show the steps for converting a number from a given base to base 10 Shows the steps involved in converting a number from a given base to base 10 <?php # Show the steps involved in converting a number # from any base (like octal or hex) to base 10 # See below for examples, instructions and copyright function show_convert_to_base_10 (\$number, \$base) { // If the number contains a decimal component if (strstr (\$number, '.')) { // Get the integer and decimal components list (\$integer, \$decimal) = explode ('.', \$number); } else { // The number is an integer \$integer = \$number; } print "<b>Convert the base \$base number \$number to a base 10 number:</b><blockquote>"; print "Convert the integer component (\$integer) of the number:<blockquote>"; // Compute the value of the integer component // Loop through the integer digit by digit // Reverse the number for easier handling \$integer = strrev (\$integer); \$length = strlen (\$integer); for (\$pos = 0; \$pos < \$length; ++\$pos) { /* PHP lets you treat strings and numbers like arrays Specify an offset and get the character at that position */ \$digit = \$integer[\$pos]; // Handle character values for digits // (for bases greater than 10) if (eregi ('[a-z]', \$digit)) { \$digit_value = (ord (strtolower (\$digit)) - ord ('a')) + 10; \$digit = "\$digit (\$digit_value)"; } else { \$digit_value = \$digit; } // Multiply the current digit by the radix // raised to the power of the current position \$result = \$digit_value * pow (\$base, \$pos); print "Multiply the value of the digit at position \$pos by the value of the radix (\$base) raised to the power of the position (\$pos):<br />"; print "\$digit * \$base<sup>\$pos</sup> = \$result <br /><br />"; \$sums[] = \$result; } print '</blockquote>'; if (isset (\$decimal)) { print "Convert the decimal component (0.\$decimal) of the number:<blockquote>"; // Pad the number with a leading 0 so that we can // start at position 1 \$decimal = '0'.\$decimal; \$length = strlen (\$decimal); for (\$pos = 1; \$pos < \$length; ++\$pos) { \$digit = \$decimal[\$pos]; // Handle character values for digits // (for bases greater than 10) if (eregi ('[a-z]', \$digit)) { \$digit_value = (ord (strtolower (\$digit)) - ord ('a')) + 10; \$digit = "\$digit (\$digit_value)"; } else { \$digit_value = \$digit; } // Multiply the current digit by the radix // raised to the power of the current position \$result = \$digit_value * pow (1/\$base, \$pos); print "Multiply the value of the digit at position \$pos by the value of the 1/radix (\$base) raised to the power of the position (\$pos):<br />"; print "\$digit * 1/\$base<sup>\$pos</sup> = \$result<br /><br />"; \$sums[] = \$result; } print '</blockquote>'; } \$sums = implode (' + ', \$sums); eval ("\\$base_10_value = \$sums;"); print "</blockquote>The value of the base \$base number \$number in base 10 is \$base_10_value. <br />"; print "This number is derived from the sum of the values of the previous operations (\$sums). <br /> <br />"; } /* DESCRIPTION show_convert_to_base_10: Shows the steps involved in converting a number from a given base to base 10. I wrote the example for a book, but after I was mostly finished it, it seemed too off topic. I hope that someone finds it useful. :)