>  기사  >  백엔드 개발  >  PHP에서 여러 16진수 시스템 간의 변환을 구현하는 방법에 대한 코드 및 함수 예제에 대한 자세한 설명

PHP에서 여러 16진수 시스템 간의 변환을 구현하는 방법에 대한 코드 및 함수 예제에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-17 11:12:331673검색

一, 십진수 변환

1, 십진수를 이진수로 변환 decbin() 함수, 다음 예

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

decbin
(PHP 3, PHP 4, PHP 5)
decbin -- 십진수를 이진수로 변환
설명
string decbin (int number)
주어진 숫자 매개변수의 이진 표현을 포함하는 string을 반환합니다. 변환할 수 있는 최대 값은 10진수로 4294967295이며 결과적으로 32개의 문자열이 생성됩니다.

2, 10진수를 8진수로 변환() 함수

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

decoct
(PHP 3, PHP 4, PHP 5)
decoct -- 10진수를 8진수로 변환
설명
문자열 Decoct(정수)
문자열 반환, 포함 주어진 숫자 인수의 8진수 표현. 변환할 수 있는 최대 값은 10진수로 4294967295이며 결과는 "37777777777"입니다.

3, 10진수를 16진수로 변환 dechex() 함수

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

dechex
(PHP 3, PHP 4, PHP 5)
dechex -- 10진수를 16진수로 변환
설명
문자열 decex(int ​​숫자)
다음을 포함하는 문자열을 반환합니다. 주어진 숫자 매개변수의 16진수 표현입니다. 변환할 수 있는 최대 값은 10진수로 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, 이진수를 16진수로 bin2hex() 함수

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

bin2hex
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
bin2h ex -- 이진 데이터를 16진수 표현으로 변환
설명
string bin2hex ( string str )
매개변수 str의 16진수 표현인 ASCII 문자열을 반환합니다. 변환에서는 바이트 모드를 사용하며 높은 니블이 우선 적용됩니다.

2, 2진수를 10진수로 변환하는 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 -- 2진수를 10진수로 변환
설명
숫자 bindec(string bin_string)
binary_string 매개변수 반환 표현된 이진수에 해당하는 십진수입니다.
bindec() 이진수를 정수로 변환합니다. 변환할 수 있는 가장 큰 숫자는 31자리, 즉 10진수로 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; 
}

3진수 변환

8진수를 10진수로 변환 octdec() 함수

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

octdec
(PHP 3, PHP 4, PHP 5)
octdec -- 8진수를 10진수로 변환
설명 숫자 10진수 (문자열 octal_string)
octal_string 매개변수가 나타내는 8진수에 해당하는 10진수를 반환합니다. 변환할 수 있는 가장 큰 값은 10진수로 17777777777 또는 2147483647입니다. PHP 4.1.0부터 이 함수는 큰 숫자를 처리할 수 있으며, 이 경우 float 유형을 반환합니다.

4개의 16진수 변환

16진수를 10진수로 변환 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 -- 16진수를 10진수로 변환
설명
숫자 16진수( string hex_string)
hex_string 매개변수가 나타내는 16진수에 해당하는 10진수를 반환합니다. hexdec() 16진수 문자열을 10진수로 변환합니다. 변환할 수 있는 최대값은 7ffffffff이며, 10진수로는 2147483647입니다. PHP 4.1.0부터 이 함수는 큰 숫자를 처리할 수 있으며, 이 경우 float 유형을 반환합니다.
hexdec() 16진수가 아닌 모든 문자를 0으로 바꿉니다. 이렇게 하면 왼쪽의 0은 모두 무시되지만 오른쪽의 0은 값에 포함됩니다.

위 내용은 PHP에서 여러 16진수 시스템 간의 변환을 구현하는 방법에 대한 코드 및 함수 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.