ip 주소 와 숫자 (긴 정수) 사이 의 변환

1676 단어 Blog
★ ★ ★ 본 편 은 오리지널 입 니 다. 전 재 된 친 구 를 인용 해 야 합 니 다.http://stephen830.iteye.com/blog/254742 > 응원 해 주 셔 서 감사합니다!★★★
사이트 의 고객 출처 를 분석 할 때 고객 의 ip 주소 에 따라 고객 의 국가 위치 나 도시 위 치 를 판단 하도록 요구한다.물론 이 정도 까지 해 야 합 니 다. 자세 한 ip 주소 라 이브 러 리 가 있어 야 합 니 다.
ip 주소 라 이브 러 리 에 서 는 일반적으로 ip 주소 로 전 환 된 숫자 (긴 정수) 를 통 해 국가 나 도 시 를 구분한다.ip 주소 라 이브 러 리 데이터베이스 의 일반 형식 은:
...
startIpLongNumber   endIpLongNumber CountryName CountryCode CityName
...
응용 프로그램 에서 고객 의 ip 주소 문자열 을 긴 정수 로 바 꾸 어야 주소 라 이브 러 리 에서 찾 을 수 있 습 니 다.
다음은 ip -> long, long -> ip 의 전환 방법 을 드 립 니 다.

/**
     * ip      .
     * @param ip
     * @return
     */
    public static long ip2long(String ip) {
    	String[] ips = ip.split("[.]");
    	long num =  16777216L*Long.parseLong(ips[0]) + 65536L*Long.parseLong(ips[1]) + 256*Long.parseLong(ips[2]) + Long.parseLong(ips[3]);
    	return num;
    }
    
    /**
     *     ip  .
     * @param ipLong
     * @return
     */
    public static String long2ip(long ipLong) {
    	//long ipLong = 1037591503;
    	long mask[] = {0x000000FF,0x0000FF00,0x00FF0000,0xFF000000};
    	long num = 0;
    	StringBuffer ipInfo = new StringBuffer();
    	for(int i=0;i<4;i++){
    		num = (ipLong & mask[i])>>(i*8);
    		if(i>0) ipInfo.insert(0,".");
    		ipInfo.insert(0,Long.toString(num,10));
    	}
    	return ipInfo.toString();
    }

위의 두 가지 방법 을 통 해 ip 주소 문자열 을 log 숫자 로 편리 하 게 환산 할 수 있 습 니 다.또는 long 숫자 를 ip 주소 문자열 로 복원 합 니 다.

좋은 웹페이지 즐겨찾기