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

首頁 > 語言 > PHP > 正文

php 實現(xiàn)進制相互轉換

2024-05-04 23:44:51
字體:
來源:轉載
供稿:網(wǎng)友
最近的項目中需要用到進制轉換,這個問題在剛剛接觸計算機理論時候,還是很會的,好久不用,居然模糊了……
 

從十進制向其它進制轉換,用的是就用該數(shù)字不斷除以要轉換的進制數(shù),讀取余數(shù)。連接一起就可以了。

<?php /** *十進制轉二進制、八進制、十六進制 不足位數(shù)前面補零* * * @param array $datalist 傳入數(shù)據(jù)array(100,123,130) * @param int $bin 轉換的進制可以是:2,8,16 * @return array 返回數(shù)據(jù) array() 返回沒有數(shù)據(jù)轉換的格式 */function decto_bin($datalist,$bin){  static $arr=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');  if(!is_array($datalist)) $datalist=array($datalist);  if($bin==10)return $datalist; //相同進制忽略  $bytelen=ceil(16/$bin); //獲得如果是$bin進制,一個字節(jié)的長度  $aOutChar=array();  foreach ($datalist as $num)  {    $t="";    $num=intval($num);  if($num===0)continue;    while($num>0)    {      $t=$arr[$num%$bin].$t;      $num=floor($num/$bin);    }    $tlen=strlen($t);    if($tlen%$bytelen!=0)    {    $pad_len=$bytelen-$tlen%$bytelen;    $t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一個字節(jié)長度,自動前面補充0    }    $aOutChar[]=$t;  }  return $aOutChar;}

測試:

var_dump(decto_bin(array(128,253),2));var_dump(decto_bin(array(128,253),8));var_dump(decto_bin(array(128,253),16));X-Powered-By: PHP/5.2.0Content-type: text/htmlarray(2) { [0]=> string(8) "10000000" [1]=> string(8) "11111101"}array(2) { [0]=> string(4) "0200" [1]=> string(4) "0375"}array(2) { [0]=> string(2) "80" [1]=> string(2) "FD"}

二進制、八進制、十六進制轉十進制

這個轉換用乘法,如:1101 轉十進制:1*2^3+1*2^2+0*2^1+1*2^0

代碼:

<?php /** *二進制、八進制、十六進制 轉十進制* * * @param array $datalist 傳入數(shù)據(jù)array(df,ef) * @param int $bin 轉換的進制可以是:2,8,16 * @return array 返回數(shù)據(jù) array() 返回沒有數(shù)據(jù)轉換的格式 * @copyright chengmo QQ:8292669 */function bin_todec($datalist,$bin){  static $arr=array('0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,'F'=>15);  if(!is_array($datalist))$datalist=array($datalist);  if($bin==10)return $datalist; //為10進制不轉換  $aOutData=array(); //定義輸出保存數(shù)組  foreach ($datalist as $num)  {    $atnum=str_split($num); //將字符串分割為單個字符數(shù)組    $atlen=count($atnum);    $total=0;    $i=1;    foreach ($atnum as $tv)    {      $tv=strtoupper($tv);             if(array_key_exists($tv,$arr))      {        if($arr[$tv]==0)continue;        $total=$total+$arr[$tv]*pow($bin,$atlen-$i);      }      $i++;    }    $aOutData[]=$total;  }  return $aOutData;} 

測試:

var_dump(bin_todec(array('ff','ff33','cc33'),16));var_dump(bin_todec(array('1101101','111101101'),2));var_dump(bin_todec(array('1234123','12341'),8));X-Powered-By: PHP/5.2.0Content-type: text/htmlarray(3) { [0]=> int(255) [1]=> int(65331) [2]=> int(52275)}array(2) { [0]=> int(124) [1]=> int(508)}array(2) { [0]=> int(342099) [1]=> int(5345)}

這些只是實現(xiàn)方式,其實不在乎php語言還是其它,實現(xiàn)思路都是一樣的。php其實內置不少函數(shù)可以完成這些內容:

bindec(),decoct(),dechex() base_convert() decbin() 這里只是實現(xiàn)思路而已。呵呵!



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

圖片精選

主站蜘蛛池模板: 凭祥市| 和平县| 磐安县| 禄丰县| 延川县| 永胜县| 彝良县| 田阳县| 丽水市| 黄陵县| 上栗县| 墨玉县| 岳西县| 怀化市| 仲巴县| 墨江| 萍乡市| 恩平市| 康乐县| 科尔| 海原县| 宽甸| 驻马店市| 醴陵市| 瑞金市| 图片| 汉寿县| 齐河县| 永寿县| 江西省| 辽阳县| 咸阳市| 南涧| 元氏县| 武夷山市| 同心县| 昌都县| 沅陵县| 杂多县| 元朗区| 沈阳市|