本文实例讲述了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程序设计有所帮助。