首頁  >  文章  >  後端開發  >  php如何實作幾種進位之間的轉相互轉換程式碼和函數實例詳解

php如何實作幾種進位之間的轉相互轉換程式碼和函數實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-17 11:12:331719瀏覽

一,十進位轉換

1,十進位轉二進位decbin() 函數,如下實例 

#
echo decbin(12); //输出 1100 
echo decbin(26); //输出 11010

decbin 
(PHP 3, PHP 4, PHP 5) 
decbin -- 十進制轉換為二進制 
說明 
string decbin ( int number ) 
返回一字串,包含有給定number 參數的二進位表示。所能轉換的最大數值為十進制的 4294967295,其結果為 32 個 1 的字串。

2,十進位轉八進位decoct() 函數 

echo decoct(15); //输出 17 
echo decoct(264); //输出 410

decoct 
(PHP 3, PHP 4, PHP 5) 
decoct -- 十進位轉換為八進位 
#說明 
string decoct ( int number ) 
傳回字串,包含有給定number 參數的八進位表示。所能轉換的最大數值為十進制的 4294967295,其結果為 "37777777777"。

3,十進位轉十六進位dechex() 函數 

echo dechex(10); //输出 a 
echo dechex(47); //输出 2f

dechex 
(PHP 3, PHP 4, PHP 5) 
dechex -- 十進位轉換為十六進位 
說明 
string dechex ( int number ) 
傳回字串,包含有給定number 參數的十六進位表示。所能轉換的最大數值為十進制的 4294967295,其結果為 "ffffffff"。

<?php 
/** 
*十进制转二进制、八进制、十六进制 不足位数前面补零* 
* 
* @param array $datalist 传入数据array(100,123,130) 
* @param int $bin 转换的进制可以是:2,8,16 
* @return array 返回数据 array() 返回没有数据转换的格式 
*/ 
function decto_bin($datalist,$bin) 
{ 
static $arr=array(0,1,2,3,4,5,6,7,8,9,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;); 
if(!is_array($datalist)) $datalist=array($datalist); 
if($bin==10)return $datalist; //相同进制忽略 
$bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度 
$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; //不足一个字节长度,自动前面补充0 
} 
$aOutChar[]=$t; 
} 
return $aOutChar; 
}

二,二進位轉換

#1,二進位轉十六位進bin2hex() 函數 

#
$binary = "11111001"; 
$hex = dechex(bindec($binary)); 
echo $hex;//输出f9

bin2hex 
(PHP 3 >= 3.0.9, PHP 4, PHP 5) 
bin2hex -- 將二進位資料轉換成十六進位表示 
說明 
string bin2hex ( string str ) 
傳回ASCII 字串,為參數str 的十六進位表示。轉換使用位元組方式,高四位元組優先。

2,二進位轉十位進bindec() 函數 

echo bindec(&#39;110011&#39;); //输出 51 
echo bindec(&#39;000110011&#39;); //输出 51 
echo bindec(&#39;111&#39;); //输出 7

bindec 
(PHP 3, PHP 4, PHP 5) 
bindec -- 二進位轉換為十進位 
說明 
number bindec ( string binary_string ) 
傳回binary_string 參數所表示的二進位數的十進位等值。 
bindec() 將一個二進位數轉換成 integer。可轉換的最大的數為 31 位元 1 或說十進制的 2147483647。 PHP 4.1.0 開始,函數可以處理大數值,在這種情況下,它會傳回 float 類型。

<?php 
/** 
*二进制、八进制、十六进制 转十进制* 
* 
* @param array $datalist 传入数据array(df,ef) 
* @param int $bin 转换的进制可以是:2,8,16 
* @return array 返回数据 array() 返回没有数据转换的格式 
*/ 
function bin_todec($datalist,$bin) 
{ 
static $arr=array(&#39;0&#39;=>0,&#39;1&#39;=>1,&#39;2&#39;=>2,&#39;3&#39;=>3,&#39;4&#39;=>4,&#39;5&#39;=>5,&#39;6&#39;=>6,&#39;7&#39;=>7,&#39;8&#39;=>8,&#39;9&#39;=>9,&#39;A&#39;=>10,&#39;B&#39;=>11,&#39;C&#39;=>12,&#39;D&#39;=>13,&#39;E&#39;=>14,&#39;F&#39;=>15); 
if(!is_array($datalist))$datalist=array($datalist); 
if($bin==10)return $datalist; //为10进制不转换 
$aOutData=array(); //定义输出保存数组 
foreach ($datalist as $num) 
{ 
$atnum=str_split($num); //将字符串分割为单个字符数组 
$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; 
}

三,八進位轉換

八進位轉十進位octdec() 函數 

#
echo octdec(&#39;77&#39;); //输出 63 
echo octdec(decoct(45)); //输出 45

octdec
(PHP 3, PHP 4, PHP 5) 
octdec -- 八進位轉換為十進位 
說明 
number octdec ( string octal_string ) 
返回octal_string 參數所表示的八進位數值。可轉換的最大的數值為 17777777777 或十進制的 2147483647。 PHP 4.1.0 開始,函數可以處理大數字,在這種情況下,它會傳回 float 類型。

四,十六進位轉換

#十六進位轉十進位hexdec()函數 

var_dump(hexdec("See")); 
var_dump(hexdec("ee")); 
// both print "int(238)" 
var_dump(hexdec("that")); // print "int(10)" 
var_dump(hexdec("a0")); // print "int(160)"

hexdec 
(PHP 3, PHP 4, PHP 5) 
hexdec -- 十六進位轉換為十進位 
說明 
number hexdec ( string hex_string ) 10


###########################################################。參數所表示的十六進制數等值的的十進制數。 hexdec() 將一個十六進位字串轉換為十進位數。所能轉換的最大數值為 7ffffffff,即十進制的 2147483647。 PHP 4.1.0 開始,函數可以處理大數字,在這種情況下,它會傳回 float 類型。 ###hexdec() 將遇到的所有非十六進位字元替換成 0。這樣,所有左邊的零都被忽略,但右邊的零會計入值中。 ######

以上是php如何實作幾種進位之間的轉相互轉換程式碼和函數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn