일반적으로 우리가 보는 IP 주소 형식은 192.168.1.1 과 유사한 점선 소수 형식입니다. 그러나 때로는 IP 주소가 연속 16 진수 문자열로 표시됩니다.
C0A80101
이것은 실제로 192.168.1.1 의 16 진수 표현입니다.
예를 들어 IP 주소의 1 바이트 (8 비트)를 나타냅니다.
C0 = 192
A8 = 168
01 = 1
01 = 1
PHP의 내장 HEXDEC 기능은 HEX 문자열을 10 진수로 변환 할 수 있습니다. 그러나 전체 숫자를 변환하고 16 진 IP 주소를 4 개의 세그먼트로 변환하는 데 직접 사용할 수 없다는 점에 유의해야합니다. 따라서 16 진수를 먼저 두 비트로 분할 한 다음 소수점으로 변환해야합니다.
다음 스크립트는 PHP를 사용하여 연속 8 비트 육각형 IP 주소를 점선 소수 형식으로 변환하는 방법을 보여줍니다.
<?php
function hexIpToDecimal($hexIp) {
// 입력 된 문자열을 대문자로 변환하십시오,통합 형식을 확인하십시오
$hexIp = strtoupper($hexIp);
// 길이가 올바른지 확인하십시오(IPv4 예 8 16 진)
if (strlen($hexIp) !== 8) {
return false; // 입력 형식 오류
}
$ipParts = [];
// 두 사람마다 하나의 그룹,소수로 변환하십시오
for ($i = 0; $i < 8; $i += 2) {
$partHex = substr($hexIp, $i, 2);
$partDec = hexdec($partHex);
$ipParts[] = $partDec;
}
// 점선 형식으로 연결되었습니다
$decimalIp = implode('.', $ipParts);
return $decimalIp;
}
// 테스트 예
$hexIp = "C0A80101";
$decimalIp = hexIpToDecimal($hexIp);
echo "16 진IP: $hexIp 전환 후: $decimalIp\n";
?>
실행 결과 :
16 진IP: C0A80101 전환 후: 192.168.1.1
입력 점검 <br> 이 함수는 먼저 전달 된 16 진 문자열의 길이가 8 비트 (IPv4의 4 바이트에 해당)임을 보장합니다.
세그먼트 처리 된 처리 <br> substr을 사용하여 한 번에 두 문자를 가져 가서 하나의 바이트를 나타냅니다.
16 진수를 10 진수로 변환하십시오 <br> HEXDEC 함수를 사용하여 2 자리 육각 문자열을 10 진수로 변환하십시오.
형식 스 플라이 싱 <br> 전환 된 4 진수 숫자를 도트 번호로 연결하여 공통 점선 소수점 IP 주소를 생성하십시오.
C0 : A8 : 01 : 01 과 같이 귀하가 직면 한 16 진 IP 주소가 구분되면 먼저 구분기를 제거한 다음 위의 방법을 사용하여 처리 할 수 있습니다.
$hexIp = str_replace(':', '', 'C0:A8:01:01');
$decimalIp = hexIpToDecimal($hexIp);
echo $decimalIp; // 산출:192.168.1.1
위의 방법을 통해 PHP의 HEXDEC 함수를 사용하여 16 진로 표시된 IP 주소를 친숙한 소수점 점파 형식으로 쉽게 변환 할 수 있습니다. 이 기사가 도움이되기를 바랍니다!