PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)

发布时间 - 2026-01-10 22:51:29    点击率:

本文实例讲述了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计算子网功能示例  # 转换为  # 程序设计  # 转换工具  # 自己的  # 的是  # 操作技巧  # 相关内容  # 执行时间  # 感兴趣  # 数据结构  # 要注意  # 给大家  # 可以实现  # 自带  # 更多关于  # 所述  # 仅能  # 几款  # 值为  # 再为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 制作企业网站建设方案,怎样建设一个公司网站?  Swift中swift中的switch 语句  android nfc常用标签读取总结  高防服务器如何保障网站安全无虞?  打造顶配客厅影院,这份100寸电视推荐名单请查收  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  EditPlus中的正则表达式实战(5)  javascript中对象的定义、使用以及对象和原型链操作小结  Linux系统命令中screen命令详解  JavaScript如何实现错误处理_try...catch如何捕获异常?  如何在建站主机中优化服务器配置?  JavaScript如何实现继承_有哪些常用方法  Laravel如何与Inertia.js和Vue/React构建现代单页应用  如何在景安服务器上快速搭建个人网站?  图册素材网站设计制作软件,图册的导出方式有几种?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在IIS7上新建站点并设置安全权限?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  使用C语言编写圣诞表白程序  如何快速搭建虚拟主机网站?新手必看指南  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何在阿里云虚拟主机上快速搭建个人网站?  JavaScript Ajax实现异步通信  jQuery validate插件功能与用法详解  免费视频制作网站,更新又快又好的免费电影网站?  如何快速上传自定义模板至建站之星?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  高性价比服务器租赁——企业级配置与24小时运维服务  如何用腾讯建站主机快速创建免费网站?  linux写shell需要注意的问题(必看)  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  韩国服务器如何优化跨境访问实现高效连接?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  网站制作企业,网站的banner和导航栏是指什么?  进行网站优化必须要坚持的四大原则