国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP進制轉換實例分析(2,8,16,36,64進制至10進制相互轉換)

2024-05-04 23:54:42
字體:
來源:轉載
供稿:網友

本文實例講述了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><?phpclass 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);?>

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 建水县| 南江县| 定南县| 宝兴县| 龙里县| 金湖县| 柘城县| 泰宁县| 双城市| 保山市| 平顶山市| 滨海县| 竹北市| 诸城市| 龙门县| 兰州市| 郴州市| 黎平县| 纳雍县| 诸城市| 南昌市| 荔波县| 县级市| 唐河县| 呼图壁县| 全州县| 秭归县| 天等县| 同心县| 怀安县| 项城市| 财经| 汤阴县| 京山县| 雷波县| 新昌县| 北海市| 高青县| 牙克石市| 兴山县| 郑州市|