本文实例讲述了php实现将任意进制数转换成10进制的方法。分享给大家供大家参考。具体如下:
php将任意进制的数转换成10进制,例如8进制转换成10进制,16进制转换成10进制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
<?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/>"; } |
希望本文所述对大家的php程序设计有所帮助。