173번 질문에 대한 산이님의 답변 부분에서요, 아래 두개의
마이스퀠 식중에서 255.248.0.0 이 어떻게 산출되었는지
도저히 이해가 가지 않습니다?
그리고, 2개의 식이 동일한데 결과 값은 61.255.255.255 과 1040187391
으로 다르게 답변하셨습니다.
저는 127.0.0.1을 1040187391 형식으로 변환코자 검색해 보았습니다.
ntoa()형식인가요?
정말 난해하군요.
SELECT INET_NTOA
(
INET_ATON('61.248.0.0') +
(
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
)
); // 결과는 61.255.255.255 입니다.
SELECT
(
INET_ATON('61.248.0.0') +
(
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
)
); // 결과는 1040187391
-------------------------------------------------------------------
글쓴이: 고석철 [홈페이지] 글쓴날: 2003년 11월 12일 00:56:30
수(새벽) 조회: 112
죄송합니다. 저도 착각을 한 것 같은데 처음 설명해 주신 것이
맞는 것 같습니다.
그런데 이해가 안되는 부분은,
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')에서
왜 INET_ATON('255.248.0.0')을
빼는 것인지 그것이 무슨 의미인지 한번만 더 설명을
부탁드려요.
========================================================
의외로 간단한데 어렵게 설명했네요.
'시작주소' , '마지막주소' , '국가코드'
'0033996344' , '0033996351' , 192
'2.6.190.56' , '2.6.190.63' , 192
이것이 맞군요.
약간의 수작이 필요하겠네요.
'61.248.0.0', '255.248.0.0', 100
이것은 네트워크주소하고
서브넷주소입니다.
따라서
시작주소는 당연이 61.248.0.0 이고
마지막 주소는 61.255.255.255 입니다.
좀 이해가 되나요?
마지막 주소를 수식으로 표현하면 좀 복잡한데
간단하게 머리로 계산할 수 있습니다.
(AND 연산을 자주 접하면 금방 위의 주소가 나옵니다..)
수식으로 표현하면(mysql)
SELECT INET_NTOA
(
INET_ATON('61.248.0.0') +
(
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
)
); // 결과는 61.255.255.255 입니다.
SELECT
(
INET_ATON('61.248.0.0') +
(
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
)
); // 결과는 1040187391
10 자리 zerofill 로 맞추려면
SELECT LPAD
(
INET_ATON('61.248.0.0') +
(
INET_ATON('255.255.255.255') - INET_ATON('255.248.0.0')
)
, 10, '0'); // 결과는 104018739
따라서 이미 address 주소 형태로 DB 에 저장되어 있다면
(먼저 address 형태로 저장하는 것이 좋겠군요.)
|