<?php
$mtime1
=
explode
(
" "
, microtime());
$startTime
=
$mtime1
[0] +
$mtime1
[1];
?>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=gb2312"
/>
<title>进制转换/title>
</head>
<body>
<form id=
"jzh"
name=
"jinzhih"
method=
"post"
action=
""
>
<input name=
"go"
type=
"hidden"
value=
"100"
>
<table width=
"482"
border=
"1"
cellpadding=
"0"
cellspacing=
"0"
bordercolor=
"#FFE8E8"
bgcolor=
"#F4F8FB"
>
<tr>
<td width=
"194"
><select name=
"jinzhi0"
id=
"jinzhi0"
>
<option value=
"2"
>2</option>
<option value=
"8"
>8</option>
<option value=
"10"
selected=
"selected"
>10</option>
<option value=
"16"
>16</option>
<option value=
"36"
>36</option>
<option value=
"62"
>62</option>
</select>
进制</td>
<td width=
"275"
><input name=
"zhi"
type=
"text"
id=
"zhi"
/></td>
</tr>
<tr>
<td>进行<input name=
"lx"
type=
"radio"
value=
"0"
checked=
"checked"
/>
普通<input type=
"radio"
name=
"lx"
value=
"1"
/>高精</td><td> </td>
</tr>
<tr>
<td>转换为
<select name=
"jinzhi1"
id=
"jinzhi1"
>
<option value=
"2"
selected=
"selected"
>2</option>
<option value=
"8"
>8</option>
<option value=
"10"
>10</option>
<option value=
"16"
>16</option>
<option value=
"36"
>36</option>
<option value=
"62"
>62</option>
</select>进制,</td><td>总长度为
<input name=
"changdu"
type=
"text"
id=
"changdu"
value=
"10"
size=
"4"
maxlength=
"2"
/>
字符。</td></tr><tr>
<td><input type=
"submit"
name=
"Submit"
value=
"提交"
/></td>
<td><input type=
"reset"
name=
"Submit2"
value=
"重置"
/></td>
</tr></table>
<p>注意:仅能进行10进制转换为2、8、16、36、62进制;或反转换。</p></form>
<?php
class
jinzhi_class
{
function
jinzhih_0(
$shu
,
$jinzhi
,
$w
)
{
$zifu
=
""
;
while
(
$shu
!=0){
$linshi
=
$shu
%
$jinzhi
;
switch
(
$jinzhi
){
case
2:
$zifu
=
decbin
(
$shu
);
return
$zifu
;
case
8:
$zifu
=
decoct
(
$shu
);
return
$zifu
;
case
16:
$zifu
=
dechex
(
$shu
);
return
$zifu
;
case
36:
if
(
$linshi
>=10)
{
$zifu
.=
chr
((
$linshi
+55));
}
else
{
$zifu
.=
$linshi
;}
break
;
case
62:
if
((
$linshi
>=10) && (
$linshi36
)) {
$zifu
.=
chr
(
$linshi
+55);
break
;}
if
((
$linshi
>=36) && (
$linshi62
)) {
$zifu
.=
chr
(
$linshi
+61);
break
;}
$zifu
.=
$linshi
;
break
;
default
:
$zifu
.=
$linshi
;
break
;
}
$shu
=
intval
(
$shu
/
$jinzhi
);
}
for
(
$i
=
strlen
(
$zifu
);
$i
$w
;
$i
++)
$zifu
.=
"0"
;
return
strrev
(
$zifu
);}
function
jinzhih_1(
$zifu
,
$jinzhi
,
$w
)
{
$shu
=0;
for
(
$i
=0;
$i
=
strlen
(
$zifu
)-1;
$i
++)
{
$linshi
=
substr
(
$zifu
,
$i
,1);
switch
(
$jinzhi
){
case
2:
$shu
=
bindec
(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
8:
$shu
= octdec(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
16:
$shu
= hexdec(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
36:
if
(ord(
$linshi
)=57)
{
$shu
+=(ord(
$linshi
)-48)*pow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1);
}
else
{
$shu
=
$shu
+ (ord(
$linshi
)-55)*pow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1);}
break
;
case
62:
if
(ord(
$linshi
)=57)
{
$shu
+=
$linshi
*pow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1);
}
elseif
((ord(
$linshi
)>=65) && (ord(
$linshi
)=90)){
$shu
+= (ord(
$linshi
)-55)*pow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1);
}
else
{
$shu
+= (ord(
$linshi
)-61)*pow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1);}
break
;
}
}
return
$shu
;
}
function
jinzhih_G0(
$shu
,
$jinzhi
,
$w
)
{
$zifu
=
""
;
while
(
$shu
!=0){
$linshi
=
bcmod
(
$shu
,
$jinzhi
);
switch
(
$jinzhi
){
case
2:
$zifu
=
decbin
(
$shu
);
return
$zifu
;
case
8:
$zifu
=
decoct
(
$shu
);
return
$zifu
;
case
16:
$zifu
=
dechex
(
$shu
);
return
$zifu
;
case
36:
if
(
$linshi
>=10)
{
$zifu
.=
chr
((
$linshi
+55));
}
else
{
$zifu
.=
$linshi
;}
break
;
case
62:
if
((
$linshi
>=10) && (
$linshi36
)) {
$zifu
.=
chr
(
$linshi
+55);
break
;}
if
((
$linshi
>=36) && (
$linshi62
)) {
$zifu
.=
chr
(
$linshi
+61);
break
;}
$zifu
.=
$linshi
;
break
;
default
:
$zifu
.=
$linshi
;
break
;
}
$shu
=
intval
(bcp(
$shu
,
$jinzhi
));
}
for
(
$i
=
strlen
(
$zifu
);
$i
$w
;
$i
++)
$zifu
.=
"0"
;
return
strrev
(
$zifu
);}
function
jinzhih_G1(
$zifu
,
$jinzhi
,
$w
)
{
$shu
=
""
;
for
(
$i
=0;
$i
=
strlen
(
$zifu
)-1;
$i
++)
{
$linshi
=
substr
(
$zifu
,
$i
,1);
switch
(
$jinzhi
){
case
2:
$shu
=
bindec
(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
8:
$shu
= octdec(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
16:
$shu
= hexdec(
$zifu
);
$i
=
strlen
(
$zifu
)+1;
break
;
case
36:
if
(ord(
$linshi
)=57)
{
$shu
=
bcadd
(
$shu
,
bcmul
((ord(
$linshi
)-48),bcpow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1)));
}
else
{
$shu
=
bcadd
(
$shu
,
bcmul
((ord(
$linshi
)-55),bcpow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1)));}
break
;
case
62:
if
(ord(
$linshi
)=57)
{
$shu
=
bcadd
(
$shu
,
bcmul
(
$linshi
,bcpow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1)));
}
elseif
((ord(
$linshi
)>=65) && (ord(
$linshi
)=90)){
$shu
=
bcadd
(
$shu
,
bcmul
((ord(
$linshi
)-55),bcpow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1)));
}
else
{
$shu
=
bcadd
(
$shu
,
bcmul
((ord(
$linshi
)-61),bcpow(
$jinzhi
,
strlen
(
$zifu
)-
$i
-1)));
}
break
;
}
}
return
$shu
;}
}
if
(isset(
$_GET
[
"p"
]))
{
if
(
$_GET
[
"p"
]===
"1"
){
echo
""
;
echo
"提示:
";
echo
"32进制低精转换,最大值:2147483646
";
echo
"32进制高精转换,最大值:77309411327
";
echo
"64进制高精转换,最大值:133143986175
";
echo
""
;
echo
"值为:"
;
$Fs
=
new
jinzhi_class();
if
(
$_POST
['lx']==
"0"
&&
$_POST
['jinzhi0']==
"10"
)
{
echo
$Fs
->jinzhih_0(
$_POST
['zhi'],
$_POST
['jinzhi1'],
$_POST
['changdu'])."
";}
if
(
$_POST
['lx']==
"1"
&&
$_POST
['jinzhi0']==
"10"
)
{
echo
$Fs
->jinzhih_G0(
$_POST
['zhi'],
$_POST
['jinzhi1'],
$_POST
['changdu']);}
if
(
$_POST
['lx']==
"0"
&&
$_POST
['jinzhi0']>
"10"
)
{
echo
$Fs
->jinzhih_1(
$_POST
['zhi'],
$_POST
['jinzhi0'],
$_POST
['changdu']);}
if
(
$_POST
['lx']==
"1"
&&
$_POST
['jinzhi0']>
"10"
)
{
echo
$Fs
->jinzhih_G1(
$_POST
['zhi'],
$_POST
['jinzhi0'],
$_POST
['changdu']);}
}
echo
""
;}
$mtime1
=
explode
(
" "
, microtime());
$endTime
=
$mtime1
[0] +
$mtime1
[1];
printf (
"页面执行时间:%.6fs."
,
$endTime
-
$startTime
);
?>