本文实例讲述了PHP进制转换。分享给大家供大家参考,具体如下:

可以实现:
10进制转换2、8、16、36、62进制
2、8、16、36、62进制转换10进制
有点要注意下,2、8、16进制转换时,使用的是系统的自己的函数。
所以,不管怎么高精度转换值可能大于2147483646。
另外,
32进制低精转换,最大值:2147483646;
32进制高精转换,最大值:77309411327;
64进制高精转换,最大值:133143986175。
jinzhi.php文件,自带演示功能。
<?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
{
//10进制转2、8、16、36、62进制
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);}
//2、8、16、36、62进制转10进制
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;
}
//10进制高精度转换2、8、16、36、62进制
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(bcdiv($shu,$jinzhi));
}
for ($i=strlen($zifu);$i$w;$i++)
$zifu.="0";
return strrev($zifu);}
//2、8、16、36、62进制高精度转换10进制
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);
?>
PS:这里再为大家推荐几款计算与转换工具供大家参考使用:
在线任意进制转换工具:
http://tools./transcoding/hexconvert
科学计算器在线使用_高级计算器在线计算:
http://tools./jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools./jisuanqi/jsq
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 进制
# 转换
# php进行ip地址掩码运算处理的方法
# js验证IP及子网掩码的合法性有效性示例
# js针对ip地址、子网掩码、网关的逻辑性判断
# JS验证IP
# 子网掩码
# 网关和MAC的方法
# JavaScript在ASP页面中实现掩码文本框效果代码
# PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
# php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
# PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
# php将字符串转换成16进制的方法
# php和js实现根据子网掩码和ip计算子网功能示例
# 转换为
# 程序设计
# 转换工具
# 自己的
# 的是
# 操作技巧
# 相关内容
# 执行时间
# 感兴趣
# 数据结构
# 要注意
# 给大家
# 可以实现
# 自带
# 更多关于
# 所述
# 仅能
# 几款
# 值为
# 再为
相关文章:
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
常州自助建站工具推荐:低成本搭建与模板选择技巧
建站主机选虚拟主机还是云服务器更好?
如何用PHP快速搭建CMS系统?
如何自定义建站之星模板颜色并下载新样式?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何生成腾讯云建站专用兑换码?
高防服务器租用指南:配置选择与快速部署攻略
实惠建站价格推荐:2025年高性价比自助建站套餐解析
安云自助建站系统如何快速提升SEO排名?
安徽网站建设与外贸建站服务专业定制方案
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
青岛网站建设如何选择本地服务器?
css网站制作参考文献有哪些,易聊怎么注册?
深圳网站制作培训,深圳哪些招聘网站比较好?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
电商网站制作公司有哪些,1688网是什么意思?
建站主机如何选?高性价比方案全解析
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何通过wdcp面板快速创建网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
制作宣传网站的软件,小红书可以宣传网站吗?
如何用已有域名快速搭建网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
七夕网站制作视频,七夕大促活动怎么报名?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何在IIS7上新建站点并设置安全权限?
建站之星后台密码遗忘或太弱?如何重置与强化?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何快速搭建高效WAP手机网站?
如何用景安虚拟主机手机版绑定域名建站?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
实例解析angularjs的filter过滤器
,怎么在广州志愿者网站注册?
建站之星如何实现五合一智能建站与营销推广?
宝塔建站助手安装配置与建站模板使用全流程解析
如何在阿里云虚拟服务器快速搭建网站?
如何高效生成建站之星成品网站源码?
在线制作视频的网站有哪些,电脑如何制作视频短片?
,巨量百应是干嘛的?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何用腾讯建站主机快速创建免费网站?
湖北网站制作公司有哪些,湖北清能集团官网?
如何制作算命网站,怎么注册算命网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
定制建站策划方案_专业建站与网站建设方案一站式指南
*请认真填写需求信息,我们会在24小时内与您取得联系。