PHP進制轉(zhuǎn)換實例分析(2,8,16,36,64進制至10進制相互轉(zhuǎn)換)
本文實例講述了PHP進制轉(zhuǎn)換。分享給大家供大家參考,具體如下:
可以實現(xiàn):
10進制轉(zhuǎn)換2、8、16、36、62進制
2、8、16、36、62進制轉(zhuǎn)換10進制
有點要注意下,2、8、16進制轉(zhuǎn)換時,使用的是系統(tǒng)的自己的函數(shù)。
所以,不管怎么高精度轉(zhuǎn)換值可能大于2147483646。
另外,
32進制低精轉(zhuǎn)換,最大值:2147483646;
32進制高精轉(zhuǎn)換,最大值:77309411327;
64進制高精轉(zhuǎn)換,最大值: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>進制轉(zhuǎn)換/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>轉(zhuǎn)換為 <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進制轉(zhuǎn)換為2、8、16、36、62進制;或反轉(zhuǎn)換。</p></form> <?php class jinzhi_class { //10進制轉(zhuǎn)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進制轉(zhuǎn)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進制高精度轉(zhuǎn)換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進制高精度轉(zhuǎn)換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進制低精轉(zhuǎn)換,最大值:2147483646 "; echo "32進制高精轉(zhuǎn)換,最大值:77309411327 "; echo "64進制高精轉(zhuǎn)換,最大值: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 ("頁面執(zhí)行時間:%.6fs.",$endTime-$startTime); ?>
PS:這里再為大家推薦幾款計算與轉(zhuǎn)換工具供大家參考使用:
在線任意進制轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/hexconvert
科學計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學運算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設計算法總結(jié)》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
- php進行ip地址掩碼運算處理的方法
- js驗證IP及子網(wǎng)掩碼的合法性有效性示例
- js針對ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)的邏輯性判斷
- JS驗證IP,子網(wǎng)掩碼,網(wǎng)關(guān)和MAC的方法
- JavaScript在ASP頁面中實現(xiàn)掩碼文本框效果代碼
- PHP函數(shù)篇詳解十進制、二進制、八進制和十六進制轉(zhuǎn)換函數(shù)說明
- php 實現(xiàn)進制轉(zhuǎn)換(二進制、八進制、十六進制)互相轉(zhuǎn)換實現(xiàn)代碼
- PHP實現(xiàn)十進制、二進制、八進制和十六進制轉(zhuǎn)換相關(guān)函數(shù)用法分析
- php將字符串轉(zhuǎn)換成16進制的方法
- php和js實現(xiàn)根據(jù)子網(wǎng)掩碼和ip計算子網(wǎng)功能示例
相關(guān)文章
php中使用exec,system等函數(shù)調(diào)用系統(tǒng)命令的方法(不建議使用,可導致安全問題)
PHP作為一種服務器端的腳本語言,像編寫簡單,或者是復雜的動態(tài)網(wǎng)頁這樣的任務,它完全能夠勝任。但事情不總是如此,有時為了實現(xiàn)某個功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍2012-09-09jq的get傳參數(shù)在utf-8中亂碼問題的解決php版
在php下用jquery傳參出現(xiàn)亂碼的解決方法2008-07-07php使用cookie顯示用戶上次訪問網(wǎng)站日期的方法
這篇文章主要介紹了php使用cookie顯示用戶上次訪問網(wǎng)站日期的方法,主要通過使用cookie保存訪問時間來實現(xiàn)該功能,需要的朋友可以參考下2015-01-01

php實現(xiàn)網(wǎng)頁上一頁下一頁翻頁過程詳解