>  기사  >  백엔드 개발  >  PHP에서 IP 주소와 정수를 변환하는 방법

PHP에서 IP 주소와 정수를 변환하는 방법

PHPz
PHPz원래의
2023-04-11 09:15:49977검색

IP 주소는 컴퓨터 인터넷에서 일반적으로 사용되는 네트워크 프로토콜 주소입니다. 일반적인 형식에는 IPv4 및 IPv6가 포함됩니다. IPv4 주소는 4개의 8비트 이진수 범위로 표시됩니다. 각 이진수는 . , 예를 들어 192.168.1.1입니다. 프로그램에서는 IP 주소를 해당 정수로 변환하거나 정수를 해당 IP 주소로 변환해야 하는 경우가 있습니다. 여기에는 IP 주소와 정수 간의 변환이 포함됩니다.

PHP 프로그램에서는 일부 내장 함수를 사용하여 IP 주소와 정수 간을 변환할 수 있습니다. PHP의 IP 주소 변환 함수는 ip2long()입니다. 이 함수는 IPv4 문자열 매개변수를 받아들이고 해당하는 32비트 부호 없는 정수를 반환합니다. 전달된 IPv4 주소가 유효한 IPv4 주소가 아닌 경우 함수는 false를 반환합니다. 예를 들어 192.168.1.1을 정수로 변환하려면 다음 코드를 사용하면 됩니다.

$ip = '192.168.1.1';
$ip_long = ip2long($ip);
echo $ip_long;

출력은 -1062731775입니다. PHP는 32비트 기계어를 사용하므로 반환된 정수는 부호가 없는 정수가 필요한 경우 다음 코드를 사용할 수 있습니다.

$long = sprintf("%u", $ip_long);
echo $long;

출력 결과는 3232235775입니다.

정수를 해당 IP 주소로 변환해야 하는 경우 PHP의 long2ip() 함수를 사용할 수 있습니다. 이 함수는 32비트 부호 없는 정수 매개변수를 받아들이고 해당 IPv4 주소 문자열을 반환합니다. 예를 들어 -1062731775를 해당 IP 주소로 변환하려면 다음 코드를 사용하면 됩니다.

$ip_long = -1062731775;
$ip = long2ip($ip_long);
echo $ip;

출력 결과는 192.168.1.1입니다.

long2ip() 함수의 매개변수는 32비트 부호 없는 정수여야 합니다. 부호 있는 정수 또는 64비트 정수가 전달되면 함수에서 반환된 IP 주소가 잘못될 수 있습니다. 부호 있는 정수를 부호 없는 정수로 변환해야 하는 경우 지정된 형식의 문자열을 변수로 출력할 수 있는 PHP의 sprintf() 함수를 사용할 수 있습니다. 예:

$long = sprintf("%u", $ip_long);
$ip = long2ip($long);
echo $ip;

위 코드는 부호 있는 정수를 올바르게 변환할 수 있습니다. 이를 부호 없는 정수로 변환한 다음 부호 없는 정수를 해당 IPv4 주소 문자열로 변환합니다.

간단히 말하면, PHP 프로그램에서 IP 주소와 정수를 변환하는 과정은 매우 간단합니다. 내장된 ip2long() 및 long2ip() 함수를 사용하면 됩니다. 현재 IPv6 주소도 널리 사용되고 있습니다. IPv6 주소를 처리해야 하는 경우 PHP에서 inet_pton() 및 inet_ntop() 함수를 사용할 수 있습니다. 이 두 함수는 IPv6 주소를 해당 바이너리 문자열로 변환하고 역변환할 수 있습니다. IPv6 주소 처리는 IPv4 주소보다 더 복잡하며 확장 라이브러리를 사용하거나 자체 코드를 작성해야 합니다.

위 내용은 PHP에서 IP 주소와 정수를 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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