软件开发|编程技术|编程代码|编程入门先学什么—程序设计语言

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

这篇文章主要介绍了PHP进制转换,结合具体实例形式分析了2,8,16,36,64进制至10进制相互转换实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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"headmeta http-equiv="Content-Type" content="text/html; charset=gb2312" /title进制转换/title/headbodyform 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" /高精/tdtd /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进制,/tdtd总长度为  input name="changdu" type="text" id="changdu" value="10" size="4" maxlength="2" /字符。/td/trtr tdinput type="submit" name="Submit" value="提交" //td tdinput type="reset" name="Submit2" value="重置" //td /tr/table p注意:仅能进行10进制转换为2、8、16、36、62进制;或反转换。/p/formphpclass 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) break;}     if (($linshi=36) 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)       }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) break;}     if (($linshi=36) 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)       }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" jinzhih_0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu'])."";}if ($_POST['lx']=="1" jinzhih_G0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu']);}if ($_POST['lx']=="0" "10"){echo $Fs-jinzhih_1($_POST['zhi'],$_POST['jinzhi0'],$_POST['changdu']);}if ($_POST['lx']=="1" "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.jb51.net/transcoding/hexconvert

科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。