웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
IP to 정수변환(;)
2004.10.21 20:20
ip주소를 정수로 변환해서 DB에 저장하면 어떨까하고 만들어본 함수...
ip2int : ip를 정수로 변환
int2ip : ip2int의 결과로 나온수를 ip로 저장...
만일 IP가 255.255.255.255면 DB에 저장하려면,
char(15)의 칼럼이 필요합니다.
만일 정수로 변환하면 4바이트인 int타입의 칼럼에 저장할수가;;
변환할때는 귀찮아서 비트연산으로 쉬프트~ 쉬프트~
참고로 php는 unsigned가 지원되지 않아서(-_-;)
128.???.???.??? 이상의 ip는 음수로 값이 나옵니다
(ex : 255.001.001.001, 128.111.111.111)
(다시 ip로 변환에는 문제 없습니다.)
function ip2int($ip){
sscanf($ip, "%d.%d.%d.%d", $a, $b, $c, $d);
$int = 0;
$int += ($a << 24);
$int += ($b << 16);
$int += ($c << 8);
$int += $d;
return $int;
}
function int2ip($int){
$ip = '';
$temp .= ($int >> 24);
if(($int >> 24) < 0) $temp += 256;
$ip .= $temp.'.';
$ip .= (($int & (0x00FF0000)) >> 16);
$ip .= '.';
$ip .= (($int & (0x0000FF00)) >> 8);
$ip .= '.';
$ip .= ($int & (0x000000FF));
return $ip;
}
ip2int : ip를 정수로 변환
int2ip : ip2int의 결과로 나온수를 ip로 저장...
만일 IP가 255.255.255.255면 DB에 저장하려면,
char(15)의 칼럼이 필요합니다.
만일 정수로 변환하면 4바이트인 int타입의 칼럼에 저장할수가;;
변환할때는 귀찮아서 비트연산으로 쉬프트~ 쉬프트~
참고로 php는 unsigned가 지원되지 않아서(-_-;)
128.???.???.??? 이상의 ip는 음수로 값이 나옵니다
(ex : 255.001.001.001, 128.111.111.111)
(다시 ip로 변환에는 문제 없습니다.)
function ip2int($ip){
sscanf($ip, "%d.%d.%d.%d", $a, $b, $c, $d);
$int = 0;
$int += ($a << 24);
$int += ($b << 16);
$int += ($c << 8);
$int += $d;
return $int;
}
function int2ip($int){
$ip = '';
$temp .= ($int >> 24);
if(($int >> 24) < 0) $temp += 256;
$ip .= $temp.'.';
$ip .= (($int & (0x00FF0000)) >> 16);
$ip .= '.';
$ip .= (($int & (0x0000FF00)) >> 8);
$ip .= '.';
$ip .= ($int & (0x000000FF));
return $ip;
}
댓글 4
-
dohoons
2004.10.21 23:13
변환하는 작업이 좀더 많은 연산을 하게 해서 악영향은 미치진 않을지.. -
양영직
2004.10.25 03:13
이 함수의 입력값과 결과가 일대일대응 하지않을수도 있지 않나요? -
플로렐라
2004.10.25 18:06
현재의 IPv4는 32비트이기 때문에,
32비트인 정수로 변환에는 아무런 문제가 없습니다. -
플로렐라
2004.11.21 14:21
ip2long, long2ip 라고 내장함수가 있잖아!!;
(삽질했네;;;)
제목 | 글쓴이 | 날짜 |
---|---|---|
[타키의 초보강좌]PHP 기초 강좌 제 2탄[mysql로 들어가보자.] [2] | 타키 | 2004.10.24 |
소수[솟수] 쉽게 구하기[에라토스테네스의 해 알고리즘사용] , 경우의 수 구하기 [5] | 타키 | 2004.10.23 |
[타키의 초보강좌]PHP 기초 강좌 제 1탄[패스워드 인증] [8] | 타키 | 2004.10.23 |
www자동 붙히기 [8] | 미오유 | 2004.10.22 |
IP to 정수변환(;) [4] | 플로렐라 | 2004.10.21 |
한글자르는 문제 PHP차원에서 해결된 건가? [5] | 겜방 | 2004.10.20 |
MySQL의 패턴 매칭 맛보기 [2] | 손상모 | 2004.10.19 |
그래프 만들어주는 소스 [10] | 미친개 | 2004.10.15 |
윈도우XP 서비스팩2 사용자인지 아닌지 판별하기 [22] | 天高馬肥[쉬드] | 2004.10.09 |
echo 안에 더블쿼테이션을 사용하기 [15] | 토토루 | 2004.10.05 |
trim 과 addslashes를 일괄처리하는 함수 [7] | BigStone | 2004.10.02 |
'' -> ""로 만들기(?) [2] | 플로렐라 | 2004.09.17 |
crontab 실제 사용 예제, 온라인 웹 게임 운영하기 (팁 + 오픈 소스 게임 소개 ^^;) [1] | 박용구 | 2004.09.14 |
날씨별로 다양한 말이나 음악 보여주기[수정] [4] | 로크 | 2004.09.13 |
-긴급소스 수정본- winamp 방송정보 알아내기 | 이승원 | 2004.09.11 |
랜덤으로 파일 가져와서 재생하고, 끝나면 다른 랜덤파일 또 재생하기.. | 겜방 | 2004.09.10 |
썸네일 생성시 unsharp mask활용할수 있는 팁..소스 | 앗싸~~ 곰세마리 | 2004.09.06 |
Echo 여러번호출? 할때 깜빡임 없애기 [5] | 신희돈 | 2004.09.03 |
서브디렉토리,파일까지 모두 삭제하는 함수. [5] | Lepas | 2004.08.24 |
4. include, require 그리고 뽀나쓰~ [8] | 티다 | 2004.08.19 |