熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

將IP地址轉換為整型數字的PHP方法、Asp方法和MsSQL方法、MySQL方法

2013-11-15 12:38:11  來源: PHP編程 

  首先我們要先了解一下IP地址轉換為整型(嚴格來說應該說是長整型)的原理~

  【轉換原理】假設IP為wxyz則IP地址轉為整型數字的計算公式為intIP = ***w + **x + *y + z

  【PHP的互轉】PHP的轉換方式比較簡單它內置了兩個函數
int iplong ( string $ip_address )和 string longip ( string $proper_address )
可以直接調用使用~

  【Asp的互轉】自定義函數如下

|  describtion: 將IP轉換為int型數字                           |
|      Authors: abandonship|
~~
Function IPNum(ByVal strIP)
    Dim nIP
    Dim nIndex
    Dim arrIP
    arrIP = Split(strIP "" )
    For nIndex = To
        If Not nIndex = Then
            arrIP(nIndex) = arrIP(nIndex) * ( ^ ( nIndex))
        End If
        nIP = nIP + arrIP(nIndex)
    Next
    IPNum = nIP
End Function

|  describtion: 將int型數字轉換為IP                           |
|      Authors: abandonship|
~~
Function NumIP(ByVal nIP)
    Dim strIP
    Dim nTemp
    Dim nIndex
    For nIndex = To Step
     nTemp = Int(nIP / ( ^ nIndex))
     strIP = strIP & nTemp & ""
     nIP = nIP (nTemp * ( ^ nIndex))
    Next
    strIP = Left(strIP Len(strIP) )
    NumIP = strIP
End Function

  【MsSQL的互轉】自定義函數如下
/***************************************************************
 * 將IP轉換為int型數字                         |
 * Code CreateBy abandonship|
 **************************************************************/
CREATE FUNCTION [dbo][ipToInt](  
 @strIp varchar()  
)RETURNS bigint  
AS  
BEGIN  
 declare @nIp bigint  
 set @nIp =    
 select
  @nIp = @nIp + LEFT( @strIp charindex(@strIp+))*Id 
 from(  
  select Id = cast(*** as bigint)  
  union all select **  
  union all select *  
  union all select
 ) as T
 return (@nIp)
END 

/***************************************************************
 * 將int型數字轉換為IP                         |
 * Code CreateBy abandonship|
 **************************************************************/
CREATE FUNCTION [dbo][intToIP](
 @nIp bigint  
)RETURNS varchar()  
As  
BEGIN  
 declare @strIp varchar()  
 set @strIp =   
 select
  @strIp = @strIp ++ cast(@nIp/ID as varchar) @nIp = @nIp%ID
 from(  
  select ID = cast(*** as bigint)  
  union all select **  
  union all select *  
  union all select
 ) as T  
 return(stuff(@strIp))  
END 

  【MySQL的互轉】相對於MsSQL來說MySQL的轉換方式比較簡單它和PHP一樣也內置了兩個函數
IP轉為整型: select INET_ATON (IP地址) 和 整型轉為IP: select INET_NTOA ( IP的整型數值 )
可以直接調用使用~


From:http://tw.wingwit.com/Article/program/PHP/201311/21328.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.