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文件自带演示功能

rush:PHP;"> 进制转换/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,$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,$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,$w) { $shu= ""; for ($i=0;$i=strlen($zifu)-1;$i++) { $linshi = substr($zifu,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),strlen($zifu)-$i-1)));} break; case 62: if (ord($linshi)=57) {$shu=bcadd($shu,bcmul($linshi,strlen($zifu)-$i-1))); }elseif ((ord($linshi)>=65) && (ord($linshi)=90)){ $shu=bcadd($shu,strlen($zifu)-$i-1))); }else{ $shu=bcadd($shu,bcmul((ord($linshi)-61),strlen($zifu)-$i-1))); } break; } } return $shu;} } if (isset($_GET["p"])) {if ($_GET["p"]==="1"){ echo ""; echo "<a href="https://www.jb51.cc/tag/tishi/" target="_blank" class="keywords">提示</a>: "; 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['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['changdu']);} } echo "";} $mtime1 = explode(" ",microtime()); $endTime = $mtime1[0] + $mtime1[1]; printf ("<a href="https://www.jb51.cc/tag/yemian/" target="_blank" class="keywords">页面</a>执行时间:%.6fs.",$endTime-<a href="https://www.jb51.cc/tag/start/" target="_blank" class="keywords">$start</a>Time); ?></pre> </div> <p><span style="color: #800000"><h3>PS:这里再为大家推荐几款计算与转换工具供大家参考使用:</h3></p> <p><span style="color: #ff6600"><h3>在线任意进制转换工具: </h3><a target="_blank" href="http://tools.jb51.cc/transcoding/hexconvert">http://tools.jb51.cc/transcoding/hexconvert</a></p> <p><span style="color: #ff6600"><h3>科学计算器在线使用_高级计算器在线计算: </h3><a target="_blank" href="http://tools.jb51.cc/jisuanqi/jsqkexue">http://tools.jb51.cc/jisuanqi/jsqkexue</a></p> <p><span style="color: #ff6600"><h3>在线计算器_标准计算器: </h3><a target="_blank" href="http://tools.jb51.cc/jisuanqi/jsq">http://tools.jb51.cc/jisuanqi/jsq</a></p> <p>更多关于PHP相关内容感兴趣的读者可查看本站专题:《<a target="_blank" href="//www.jb51.cc/Special/630.htm">PHP数学运算技巧总结</a>》、《<a target="_blank" href="//www.jb51.cc/Special/623.htm">PHP数组(Array)操作技巧大全</a>》、《<a target="_blank" href="//www.jb51.cc/Special/614.htm">PHP数据结构与算法教程</a>》、《<a target="_blank" href="//www.jb51.cc/Special/111.htm">php程序设计算法总结</a>》、《<a target="_blank" href="//www.jb51.cc/Special/357.htm">PHP运算与运算符用法总结</a>》、《<a target="_blank" href="//www.jb51.cc/Special/47.htm">php字符串(string)用法总结</a>》及《<a target="_blank" href="//www.jb51.cc/Special/231.htm">php常见数据库操作技巧汇总</a>》</p> <p>希望本文所述对大家<a href="https://www.jb51.cc/tag/PHP/" target="_blank" class="keywords">PHP</a>程序设计有所帮助。</p><div class="topcard-tags"><a href="https://m.jb51.cc/tag/zhuanhuan/" class="tag_link" target="_blank">转换</a><a href="https://m.jb51.cc/tag/jinzhi/" class="tag_link" target="_blank">进制</a></div> </div> </div> </div> <!-- row end--> <div class="clearfix"></div> <!-- row --> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <div class="title"><h1>相关文章</h1></div><div class="list_con"> <div class="title"> <a href="https://m.jb51.cc/php/4739043.html" title="vue+thinkphp5实现微信扫码支付(NATIVE支付)">vue+thinkphp5实现微信扫码支付(NATIVE支付)</a> </div> <div class="summary">统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/07-30/10/32d06eca1830b39e35547ff639b7b95b.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/php/4739042.html" title="uniapp+thinkphp5实现微信扫码支付(APP支付)">uniapp+thinkphp5实现微信扫码支付(APP支付)</a> </div> <div class="summary">统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/07-30/10/3d907355e295604aef536bba5b45dd7d.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/php/4739041.html" title="uniapp+thinkphp5实现微信登录">uniapp+thinkphp5实现微信登录</a> </div> <div class="summary">前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/07-30/10/fc29e4e4eba385bc042444571f518ef6.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/php/4739040.html" title="【PHP】关于fastadmin框架中使用with进行连表查询时setEagerlyType字段的理解">【PHP】关于fastadmin框架中使用with进行连表查询时setEagerlyType字段的理解</a> </div> <div class="summary">FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...</div> </div><div class="list_con"> <img src="https://m.jb51.cc/res/2024/07-30/10/e6971fb86d3ee30a4466e87826da43d8.png" width="100" height="64" style="float:right;margin-left:20px;" /> <div class="title"> <a href="https://m.jb51.cc/php/4739039.html" title="【workerman】uniapp+thinkPHP5使用GatewayWorker实现实时通讯">【workerman】uniapp+thinkPHP5使用GatewayWorker实现实时通讯</a> </div> <div class="summary">之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...</div> </div><div class="list_con"> <div class="title"> <a href="https://m.jb51.cc/php/4739038.html" title="uniapp+thinkphp5实现微信支付(JSAPI支付)">uniapp+thinkphp5实现微信支付(JSAPI支付)</a> </div> <div class="summary">统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...</div> </div></div> </div> <!-- row end--> </div> </div> <footer id="footer"> <div class="container"> <div class="copyright"> Copyright © 2018 编程之家. 当前版本 V7.0.16<br> <span class="ml5">编程之家 版权所有 <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">闽ICP备13020303号-8</a> </div> </div> </footer> <script src="https://m.jb51.cc/js/count.js"></script> </body> </html>